1

ボタンをクリックしてアクティビティを変更しようとすると、インテントを使用する必要があることがわかりました。しかし、私のコードで使用すると、うまくいかないようです。私が持っているコードに問題はありますか?

  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);
          }
      }

単純な命名エラーなのか、それとも呼び出し方が間違っているのかはわかりません。どんな助けでも素晴らしいでしょう。

また、変更したいアクティビティ (RecipeMethodActivity) を Android マニフェストに追加しました。

4

4 に答える 4

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);
      }
  }
于 2012-04-30T20:47:56.807 に答える
1

メソッドでは、2 つのオブジェクトonClickのインスタンスが同じかどうかを比較しています。View明らかに、メソッドViewに渡されるオブジェクトはプライベート インスタンス変数ではありません。onClick==Button button

代わりに ID を比較する必要があります。

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

于 2012-04-30T20:50:20.693 に答える
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);
    }
});
于 2012-04-30T20:47:48.697 に答える
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);
        }});
于 2012-04-30T20:49:16.533 に答える