1

當您嘗試通過單擊按鈕來獲取活動時,我發現您必須使用Intent。但是當在我的代碼中使用它似乎不工作。我的代碼有問題嗎?爲什麼按鈕點擊時活動不會改變?

public class SearchActivity extends Activity implements OnClickListener{ 

    private ListView recipes; 
    Intent intent; 
    Button button; 
    EditText input; 

    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.searchlist); 

      //EditText input = (EditText)findViewById(R.id.recipeName); 
      button = (Button)findViewById(R.id.submit); 
      input = (EditText)findViewById(R.id.recipeName); 

      //recipes = (ListView)findViewById(R.id.recipes); 
      //recipes.setAdapter(new ArrayAdapter<String> (this, R.layout.main, getResources().getStringArray(R.array.BaconSandwich))); 
      button.setOnClickListener(this); 
     } 

     public void onClick(View clicked) { 

      String value = input.getText().toString(); 
      Toast.makeText(this, value, Toast.LENGTH_SHORT).show(); 

      if(clicked == button) { 
      recipes = (ListView)findViewById(R.id.recipes); 
      Toast.makeText(this, "It is working for this item.", Toast.LENGTH_SHORT).show(); 
      Intent i = new Intent(SearchActivity.this, RecipeMethodActivity.class); 
      SearchActivity.this.startActivity(i); 
      } 
     } 

林不知道,如果它僅僅是一個簡單的命名錯誤,或者我打電話的方式是錯誤的。任何幫助都會很棒。

此外,我還在Android Manifest中添加了要更改爲(RecipeMethodActivity)的活動。

+0

你看到你都當吐司單擊該按鈕? – Bobbake4

+0

究竟意味着什麼「不起作用」?閱讀:什麼是LogCat? (在Eclipse中:窗口 - >顯示視圖 - > Android - > LogCat) – yoshi

+0

不,我只是看到第一個實際上的敬酒,將嘗試刪除if語句。唯一的問題是我最終希望應用程序發送數據,具體取決於添加到文本框的值。 –

回答

2

你需要在你的onClick方法來檢查視圖的ID,像這樣:

public void onClick(View clicked) { 

     String value = input.getText().toString(); 
     Toast.makeText(this, value, Toast.LENGTH_SHORT).show(); 

     if(clicked.getId() == R.id.submit) { 
     recipes = (ListView)findViewById(R.id.recipes); 
     Toast.makeText(this, "It is working for this item.", Toast.LENGTH_SHORT).show(); 
     Intent i = new Intent(SearchActivity.this, RecipeMethodActivity.class); 
     SearchActivity.this.startActivity(i); 
     } 
    } 
+0

我已經做了必要的更改,我首先刪除了打算並開始活動和敬酒運行良好產生適當的文本。但是當我改變並且想要改變應用程序崩潰的活動時。有關它可能來自哪些想法?我是否在正確的莊園中致電開始活動? –

+0

當它崩潰時,只需編輯問題併發布您在LogCat中可以找到的錯誤。 – yoshi

+0

對不起,我完全不理解Log Cat,但從我能收集的問題是onCreate(RecipeMethodActivity)。這個活動什麼都不做,應該是空白的。 –

0

我從來沒有嘗試過測試視圖與clicked == button,但這應該在你的onCreate()工作:

button.setOnClickListener(new OnClickListener() { 
    public void onClick(View view) { 
     Toast.makeText(this, "It is working for this item.", Toast.LENGTH_SHORT).show(); 
     Intent i = new Intent(SearchActivity.this, RecipeMethodActivity.class); 
     SearchActivity.this.startActivity(i); 
    } 
}); 
0
button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     Toast.makeText(this, "It is working for this item.",Toast.LENGTH_SHORT).show(); 
     Intent i = new Intent(view.getContext(), RecipeMethodActivity.class); 
     i.putExtra("extra", extra); 
     //use this^to transfer data from one activity to another 
     startActivity(i); 
     }}); 
+0

像這樣的方法,你不必實現'onClickListener'。區別在於,在這種方法中,您爲每個可點擊元素實例化新偵聽器,但是如果實現'onClickListener',則不需要爲每個可點擊元素實例化。 – vtuhtan

1

在你onClick方法,你是比較是否不是兩個View對象的實例都是一樣的。顯然,傳遞給onClick方法的View對象不是==轉換爲私有實例變量Button button

你需要,而不是比較它們的ID:

if (view.getId() == R.id.button)

+1

大衛更快,但這個答案提供了背景。 – yoshi

+0

卡,如此接近:P –

相關問題