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 –

相关问题