2017-02-16 6 views
-1

私はクラスのための簡単なメニューアプリケーションを構築しています。私は自分のアプリケーションでListViewを持っているので、リスト内の項目をクリックすると、その項目の適切なアクティビティに移動するようにしています。これまでのところ、私は自分の関数の外で意図を持っていましたが、関数内で実行するとプログラムがクラッシュします。いずれも右方向インテントは私のアプリをクラッシュさせていますか?

//set the item listener 
    menu.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      String selected = ((TextView) view.findViewById(R.id.complaint)).getText().toString(); 
      if(selected.equals("Pasta")){ 
       runPasta(); 
      } 
     } 
    }); 


} 

public void runPasta(){ 
    //Intent myIntent = new Intent(this, PastaItems.class); 
    //myIntent.putStringArrayListExtra("finalList", foodList); 
    this.startActivity(new Intent(this,PastaItems.class)); 

} 
+1

ここにあなたのログの猫を共有 – Piyush

+0

あなたが毎回クラッシュを求めているなら、より良い解決策のためにクラッシュログを投稿してください。 –

答えて

4

あなたはthisOnItemClickListenerインスタンスを参照することを意味しOnItemClickListener内側からrunPasta()関数を呼び出している中で私を指摘することができます。ちょうどthisの代わりにActivityClassName.thisを使用してください。

4

あなたはコンテキストとして 'this'を使用しています。それは匿名の内部クラスを作成するので、setOnItemClickListenerの内部では動作しません。 より具体的にする必要があります。 YourActivity.this

0

このを交換し これはあなたの問題を解決する可能性があります。 getContext()を使用すると、適切なコンテキストが得られます。 これを試してみてください:

startActivity(new Intent(getContext(),PastaItems.class)); 
0

あなたはrunPastaメソッドにadapterView上のインスタンスを渡すことができますし、runPasta方法から、あなたはあなたのマニフェストにPastaItems活動を宣言していることを確認してくださいstartActivity(new Intent(adapterView.getContext(),PastaItems.class));

0

それを呼び出すことができます。

関連する問題