Проблема получения значения из внутреннего класса в Android - PullRequest
1 голос
/ 19 марта 2010

Привет, в моем коде что-то не так, и я не знаю почему Моя программа имеет 2 спиннера и 1 просмотр текста. когда я выбираю что-то в обоих спиннерах, он должен вызывать метод из внутреннего класса getrate которые возвращают некоторое значение в textview. Этот класс getrate работает с моим Java-приложением, но не работает с Android-приложением.

вот мой код

public class BTS extends Activity {
/** Called when the activity is first created. */
 int i=0;
 int j=0;
 String[] li={"1","2","3"};
 getrate gr;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


 final Spinner combo = (Spinner)findViewById(R.id.widget30);
 final Spinner combo2 = (Spinner)findViewById(R.id.widget32);
 final TextView rate = (TextView) findViewById(R.id.widget31);


  ArrayAdapter<String> a = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, li);
  ArrayAdapter<String> b = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, li);
        combo.setAdapter(a);
        combo2.setAdapter(b);
        combo.setOnItemSelectedListener(new OnItemSelectedListener() {

   @Override
   public void onItemSelected(AdapterView<?> arg0, View arg1,
     int arg2, long arg3) {
    // TODO Auto-generated method stub
    i = (int) combo.getSelectedItemId();
    if(i==0||j==0){rate.setText("กรุณาเลือกสถานีต้นทางและปลายทาง");}
    else {rate.setText("ราคาค่าโดยสาร : "+gr.get(i, j)+" บาท");}
   }

   @Override
   public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

   }


  });


        combo2.setOnItemSelectedListener(new OnItemSelectedListener() {

   @Override
   public void onItemSelected(AdapterView<?> arg0, View arg1,
     int arg2, long arg3) {
    // TODO Auto-generated method stub
    j = (int) combo2.getSelectedItemId();
    if(i==0||j==0){rate.setText("กรุณาเลือกสถานีต้นทางและปลายทาง");}
    else {rate.setText("ราคาค่าโดยสาร : "+gr.get(i, j)+" บาท");}
   }

   @Override



  public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

   }
  });
    }
}




class getrate {

 private String[][] list;
 int c2=0;
 String[] ct={"1","2","3"};
 getrate(){

 }

 public String get(int i,int j){
  return ct[i];
 }

}

Ps. Извините за мой английский; D

1 Ответ

1 голос
/ 19 марта 2010

Я думаю, что вы должны сначала инициализировать, а затем обратиться к нему с помощью BTS.this.gr

Это было бы:

public void onCreate(Bundle savedInstanceState) {

this.gr=new getrate();
...

// in your anonymous class
else {rate.setText("ราคาค่าโดยสาร : "+BTS.this.gr.get(i, j)+" บาท");}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...