2012-01-12 10 views
2

私の主なアクティビティレイアウトには、すべて同じアクティビティ(MapsActivity)を呼び出す10種類のボタンが含まれています。インテント/アクティビティを呼び出したボタンのIDを確認しますか? Android

MapsActivityで押されたボタンのIDはどのようにして知ることができますか?私はそれを使用して送信しようとしました

intent.putExtra( "id"、id);

しかし、このidは、いずれかのボタンを押すと同じように出てきました。

同じアクティビティを呼び出すボタンごとに別のインテントを作成する必要がありますか?または、1つのインテントを使用して、MapsActivityに渡す値を変更することはできますか?

この問題を十分に説明していただければ幸いです。ありがとう!

+0

ボタンを正しく取得するには、findViewById(...)を使用しますか?次の行を使用します(MapsActivityクラス内)。この関数に渡すパラメータはボタンIDですね。 – kosa

+0

確かに私は、ボタンを取得し、インテントを作成するonClickListenerを設定するためにfindViewById(..)を使用します。 – kmb64

+0

複数のボタンに対して同じリスナーを使用していますか?そうでない場合は、ハードコーディングできますか? – kosa

答えて

2

あなたはコードのボタンにリスナーをfindViewByIdで追加すると言うので、xmlでレイアウトを設計できないという要件があると仮定しています。したがって、これらのボタンをすべて保持している最初のアクティビティを設定するときは、すべて同じクリックリスナを取得するようにしてください。このリスナメソッドをmapsButtonListenerと呼びます。それはこのように宣言する必要があります。私達のボタンのIDについて

public void mapsButtonListener(View sender) { 
    int id = sender.getId(); 
    Intent mapsActivity = new Intent(getApplicationContext(), MapsActivity.class); 
    mapsActivity.putExtra("button_id", id); 
    startActivity(mapsActivity); 
} 

:あなたはちょうど彼らがIDを持っていることを確認した後、XMLのデザインを使用してボタンを配置している場合

をSは:XMLで宣言sの。しかし、でない場合は、 xmlを使用してコード内でインスタンス化する代わりに、setId(4)というメソッドを使用してid:sのボタンを指定する必要があります(4つを明示的に指定しないでください。 hehe)。これは、クリックリスナを追加するのと同時に実行する必要があります。また、どのボタンがどの番号を取得しているかを確認して、後でこれを確認することもできます。

mapsActiviyが開始されるとMapsActivityでIDを取得し、我々はそのIDをお勧めします。

int id = getIntent().getIntExtra("button_id"); 
+0

thatsすぐそこに – kmb64

+0

@karl聞いてうれしいです:) – davogotland

関連する問題