2012-01-06 12 views
1

レイアウトに3つのボタンがあります。私はそれぞれが別の画面に行くように押されたときに欲しい。私が何をすべきかは、このようなものかもっと複雑なものですか?ボタンとOnClickリスナー

b1=(Button)findViewById(R.id.Button01); 
b1.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     FirstButtonClicked(); 
} 
}); 

b2=(Button)findViewById(R.id.Button02); 
b2.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
    SecondButtonClicked();} 
}); 

b3=(Button)findViewById(R.id.Button03); 
b3.setOnClickListener(new OnClickListener() { 
public void onClick(View v) { 
ThirdButtonClicked();} 
}); 

私はボタンに関する何かを返さなければなりませんが押されたか、最初のボタンは、(例えば)が押された場合に第二と第三はまったく実行されませんか? Alos、それらはonCreate内で定義する必要があります。あるいは、CheckButtons()という新しい関数としてそれらを定義することができます。私のon.Create()からコールするだけです(または、いつでもそれらのボタンをチェックしたいですか?)

+0

このようにしても何も問題はありません。私はあなたがそれを必要とする場合はさらに助けることができますが、あなたの質問をきれいにしてください、それは読むのが不可能に近いです。 – AedonEtLIRA

+0

個人的には、これは問題ないと思います。明らかに英語は最初の言語ではありません。それはまだ理解できますし、このサイトのほとんどの質問より多くの情報が提供されています。あなたは答えとして@AedonEtLIRAを書くべきです、私はupmarkの質問と答えをします。 – zode64

答えて

3

このコードが正しい各ボタンのIDを変更する必要があります。他の画面に移動するには、次の操作を行います。

Intent i = new Intent(this, OtherScreen.class); 
startActivity(i); 

とのAndroidManifest.xmlをタグアプリケーションにOtherScreenの許可を置く:あなたはこれを試みることができる

<activity android:name=".OtherScreen"> </activity> 
2

いいですね。ボタンをクリックしたメソッド1,2,3では、必要なアクティビティを実行するためのインテントを開始するだけです。

あなたはしかし、R.id.Button01、R.id.Button02、R.id.Button03

+2

彼らは外出するつもりはありません。現在のようにインスタンスオブジェクトとして残すことができます。私は個人的にそれを好む方法。 – AedonEtLIRA

+0

ありがとう、少し混乱して、私のポストを約4回編集しました! –

1

を...しかしこれは簡単に出ています...

public class StackOverFlow extends Activity implements OnClickListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Button b1,b2,b3; 
    Intent i; 

    b1= //get handle 
    b2= //get handle 
    b3= //get handle 
} 

public void onClick(View v) { 

    switch (v.getId()) { 
    case b1: 
     i=new Intent(StackOverFlow.this,destination1.class); 
     break; 

    case b2: 
     i=new Intent(StackOverFlow.this,destination2.class); 
     break; 

    case b3: 
     i=new Intent(StackOverFlow.this,destination3.class); 
     break; 
    default: 
     break; 
    } 
} 

} 
関連する問題