2016-11-10 6 views
0

私は2スピナーを持っています。コードのこの部分はスピナーからの選択を読み、テキストファイルに書き出します。問題は常にデフォルト選択を書きますが、私がスピナーで別の選択を選択しても変更されません。助けてください。いつもデフォルトの選択を書きますが、私はスピナーで別の選択を選択しても変わりません

package com.apps.androidapps10; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

import android.os.Environment; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.EditText; 
import android.view.View; 
import android.widget.Spinner; 
import android.widget.Toast; 


public class Main2Activity extends AppCompatActivity { 

    Button hantarBtn; 
    private static final String TAG = "MEDIA"; 
    String namaJalan = ""; 
    String namaLorong = ""; 
    String noKenderaan; 
    private String filename = "SampleFile.txt"; 
    private String filepath = "MyFileStroage"; 
    File myExternalFile; 
    EditText inputText; 
    String separator = System.getProperty("line.separator"); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Intent intent = getIntent(); 
     setContentView(R.layout.activity_main2); 

     hantarBtn = (Button) findViewById(R.id.button); 
     inputText = (EditText) findViewById(R.id.editText); 

     try { 

      BufferedReader bReader = new BufferedReader(new InputStreamReader 
        (getAssets().open("jalan.txt"))); 
      ArrayList<String> jalan = new ArrayList<String>(); 
      String line = bReader.readLine(); 
      while (line != null){ 
       jalan.add(line); 
       line = bReader.readLine(); 

      } 

      bReader.close(); 

      Spinner spinner1 = (Spinner) findViewById(R.id.spinner); 
      ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, 
        android.R.layout.simple_spinner_dropdown_item,jalan); 
      spinner1.setAdapter(adapter1); 

      namaJalan = spinner1.getSelectedItem().toString(); 




     }catch (IOException e){ 

      e.printStackTrace(); 
     } 

     try { 
      BufferedReader bReader1 = new BufferedReader(new InputStreamReader 
        (getAssets().open("lorong.txt"))); 
      ArrayList<String> lorong = new ArrayList<String>(); 
      String line = bReader1.readLine(); 
      while (line != null){ 
       lorong.add(line); 
       line = bReader1.readLine(); 

      } 

      bReader1.close(); 

      Spinner spinner2 = (Spinner) findViewById(R.id.spinner2); 
      ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1,lorong); 
      spinner2.setAdapter(adapter2); 

      namaLorong = spinner2.getSelectedItem().toString(); 

     }catch (IOException e) { 
      e.printStackTrace(); 
     } 






     hantarBtn.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       try { 

        FileOutputStream fos = new FileOutputStream(myExternalFile,true); 
        fos.write(inputText.getText().toString().getBytes()); 
        fos.write("\t".getBytes()); 
        fos.write(namaJalan.toString().getBytes()); 
        fos.write("\t".getBytes()); 
        fos.write(namaLorong.toString().getBytes()); 
        fos.write("\r\n".getBytes()); 
        fos.flush(); 
        fos.close(); 


        Toast.makeText(getApplicationContext(), "Write Done...", 
          Toast.LENGTH_SHORT).show(); 
        //Intent intent = new Intent(Main2Activity.this, Main2Activity.class); 
        //startActivity(intent); 
       } catch (Exception e) { 
        e.printStackTrace(); 
        Log.i(TAG, "Failed to write"); 
       } 

      } 
     }); 

     if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) { 
      hantarBtn.setEnabled(false); 
     } else { 
      myExternalFile = new File(getExternalFilesDir(filepath), filename); 
     } 
    } 

    private static boolean isExternalStorageReadOnly() { 
     String extStorageState = Environment.getExternalStorageState(); 
     if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) { 
      return true; 
     } 
     return false; 
    } 

    private static boolean isExternalStorageAvailable() { 
     String extStorageState = Environment.getExternalStorageState(); 
     if (Environment.MEDIA_MOUNTED.equals(extStorageState)) { 
      return true; 
     } 
     return false; 
    } 



} 

答えて

0

あなたのスピナーを移動する必要がありますトップ(あなたがButton hantarBtn;を持って同じ場所)にES、その後、onClickListenerにスピナーから値を得るためにあなたのコードを移動:

public class MainActivity{ 
    Spinner spinner1; // There's another way of doing this, 
    Spinner spinner2; // but putting them here should be easiest 
    // The rest of your member variables 

    @Override 
    public void onCreate(){ 
     spinner1 = (Spinner) findViewById(R.id.spinner1); 
     spinner2 = (Spinner) findViewById(R.id.spinner2); 

     // the rest of your code 

     button.setOnClickListener(new View.OnClickListener(){ 
      public void onClick(View v){ 
       // Make sure to get the values when the button is clicked 
       selectedItem1 = spinner1.getSelectedItem().toString(); 
       selectedItem2 = spinner2.getSelectedItem().toString(); 

       // whatever else you want to do when the button is clicked 
      } 
     } 
    } 
+0

私はまだこのスピナーで非常に多くの問題に直面しています。私が参照できるサンプルがありますか?ありがとうございました –

+0

@NeshMogan私は私の答えを更新しました。アクティビティが作成されたときだけ、スピナーから値を取得していました。ボタンをクリックすると値を取得する必要があります。 –

0
  1. ファイル操作(読み取り/書き込み)を処理するためのリソースを使用してください。

  2. スピンナー使用AdapterViewが表示

利用setOnItemSelectedListener()関数ではなく、setOnClickListener()を使用します後で

  • を呼び出し、別の関数にファイルへの書き込みセパレートそれ以下のように

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, 
        int position, long id) { 
        // write to file 
    } 
    
        @Override 
        public void onNothingSelected(AdapterView<?> parentView) { 
        // your code here 
        } 
    }); 
    
  • 関連する問題