2017-02-16 74 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

你調用從OnItemClickListener這意味着thisOnItemClickListener實例內runPasta()功能。嘗試使用ActivityClassName.this而不是僅僅使用this

4

您正在使用'this'作爲上下文;它不會在setOnItemClickListener內工作,因爲它會創建一個匿名內部類。 所以你需要更具體。 更換YourActivity.this

0

這可能會解決你的問題。使用getContext()爲您提供適當的上下文。 試試這個:

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

你可以通過在adapterView到runPasta方法和runPasta方法實例,你可以把它叫做startActivity(new Intent(adapterView.getContext(),PastaItems.class));

0

確保已宣佈PastaItems您清單活動。