2012-05-12 6 views
0

私はAndroidが初めてで、情報の操作と表示を試しています。私は正常にこのアプリケーションのメインビューにスピナーを置くが、別のビュー(goFilterを実行するbutoton経由)をクリックしてgoHomeを実行するボタンを介して戻ると、代わりにプレースホルダが表示されます。私はgoogleがスピナークラスの情報をロードしていないことと関係があると確信していますが、それをどうやってやるのか分かりません。他の人からメインビューに戻ったときにAndroidのスピナーが表示されない

提案? .javaコード:

package com.example.hellorelative; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.AdapterView; 


public class HelloRelative extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Spinner spinner = (Spinner) findViewById(R.id.spinner); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       this, R.array.planets_array, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 
     spinner.setOnItemSelectedListener(new MyOnItemSelectedListener()); 

    } 
    public class MyOnItemSelectedListener implements OnItemSelectedListener { 

     public void onItemSelected(AdapterView<?> parent, 
      View view, int pos, long id) { 
      Toast.makeText(parent.getContext(), "The planet is " + 
       parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); 
     } 

     public void onNothingSelected(AdapterView parent) { 
      // Do nothing. 
     } 
    } 
    public void goFilter(View view) { 
     setContentView(R.layout.c_filter); 
    } 
    public void goHome(View view) { 
     setContentView(R.layout.main); 
    } 
} 
+0

関連性はありませんが、内部クラスを静的(おそらくは非公開)として宣言することをお勧めします - 'private static class MyOnItemSelectedListener ...' – MByD

答えて

0

あなたのgo実際には、アプリをどこにでも移動させる方法はないようですが、あなたのアクティビティのレイアウトを変更するだけです。

私は2番目のレイアウトがidを持つスピナー要素を持っていないと思います。なぜそれがなくなったのですか?

あなたは決して別のアクティビティを開始してこのアクティビティに戻ることはないので、onCreate()メソッドは呼び出されず、スピナは再びセットアップされません。あなたのフィルタービューのための余分な活動を作成し、

startActivity(new Intent(this, filterActivity.class) 

または

でナビゲートされない何したい

は、あなたのフィルターレイアウト「かもしれない」仕事でスピナーを提供しています。あなたが見えないようにしたい場合は、それを消してください。

spinner.setVisibility(View.GONE); 
関連する問題