2017-05-05 9 views
0

私はアンドロイドスタジオのスピナーウィジェットが必要な単純なアンドロイドプロジェクトに取り組んでいます。私がしたいのは、ユーザーがスピナーから選択肢を選択すると、別のアクティビティが開きます。私はコーディングの途中です。私はインテントでスイッチケース条件を使うことに決めました。問題は、アプリケーションを実行するたびに、宣言する特定のアクティビティの場所に自動的に移動することです。私はスピナーで何も選択しなかったが。 注:log catにはエラーはありません。スピナーの別のアクティビティの自動表示を修正する方法onItemSelectedメソッド

私のような初心者には大変感謝しています。

public class CustomOnItemSelectedListener extends Activity implements 
     OnItemSelectedListener { 

    public void onItemSelected(AdapterView<?> parent, View view, int pos, 
           long id) { 

     // **************************** below here is where I start the new activity 
     switch (pos) { 
      case 0 : 
       Intent i = new Intent(app.this, home.class); 
       app.this.startActivity(i); 
       break; 

      case 1 : 
       //Intent intent = new Intent(app.this, about.class); 
       //app.this.startActivity(intent); 
       break; 

      case 2 : 
       //Intent intent1 = new Intent(app.this, home.class); 
       //app.this.startActivity(intent1); 
       break; 

     } 
     // **************************** above here is where I start the new activity 
    } 

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

    } 
} 
+0

にリスナーであなたのスイッチを起動することができ、無駄なテキストを使用して、スピナーの最初のエントリを読み込むことができ、あなたを再タグ付けして下さい質問! – Aroniaina

+0

@Aroniaina申し訳ありませんが、私はそれが自動的にhome.classに行くアプリケーションを実行するときです。私がスピナーで最初に選択しなかったとしても。どのように私の問題を解決するための任意のアイデア? –

答えて

0

デフォルトでアプリケーションが作成されると、スピナーで最初のオプションが選択され、リスナーが呼び出されます。これを避けるために、あなたは@Simon

のソリューションを使用するか、選択を確認し、アイテムがあなたのスピナーに選択されたときにこのボタンを押すとされていない場合、あなたの活動を変更するには、ボタンを使用することができます。

UPDATE また、「選択の活動」などのタイトルでかつ1と0でない

+0

私はすでに、ユーザーが任意の選択肢を選択したときに私がしたいことは..ですボタンの先生とその作業をしました..しかし、私は自分のやりたいことは、それには何のボタンではありません。..デフォルトではJ.Doe @別のアクティビティ –

+0

に行きますおそらく第3の解決策があなたを助ける – Firerazzer

1

この

は、例えば、あなたのクラスのintを宣言してくださいonCreate()の前に、onCreate()に0を割り当てます。スピンナーで何かを選択するときは、この変数を使用して0より大きいかどうかを確認します(下の例を参照)。

public class ExampleActivity extends AppCompatActivity { 
private int spinnerCheck; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mSpinnerCheck = 0; 

    mMySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      int itemId = (int) id; 

      // For some reason this method is called during initialization, so increment counter once to prevent it from auto selecting first item when loading view 
      spinnerCheck += 1; 

      if (spinnerCheck > 1) { 
       switch (pos) { 
        case 0: 
         Intent i = new Intent(app.this, home.class); 
         app.this.startActivity(i); 
         break; 

        case 1: 
         //Intent intent = new Intent(app.this, about.class); 
         //app.this.startActivity(intent); 
         break; 

        case 2: 
         //Intent intent1 = new Intent(app.this, home.class); 
         //app.this.startActivity(intent1); 
         break; 

       } 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
    } 
} 

何らかの理由で、作成された最初の項目が選択されていますが、その理由はわかりませんが、これは機能するはずです。

+0

返事ありがとうございますが、私は強制終了しました。ここに私のログキャストです –

+0

原因:java.lang.NullPointerException:仮想メソッドを呼び出そうとしました 'void android.widget.Spinner.setOnItemSelectedListener(android.widget.AdapterView $ OnItemSelectedListener ) 'nullのオブジェクト参照で com.example.joshua.myapplication.app.onCreate(app.java:22) –

+0

行22はこのsirです:spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ –

関連する問題