2012-01-16 3 views
1

ページ上に複数のボタンをリンクすることはできません。 ページには、基本的に見出しを持っており、3種類の話題 私がしようとしているコード(私は、このサイトにある)にリンクされている以下の3つのボタンは:androidのボタンをリンクする

package com.ICTrevisionapp; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 

    public class topicstoquiz extends Activity { 
     /** Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.topics);} 
     public void onClick(View v) { 
     { 
      Button clickedButton = (Button) v; 
      setContentView(0); 
      switch(clickedButton.getId()) 
      { 
      case R.id.button2: 
        setContentView(R.layout.topic1); 
       Intent myIntent = new Intent (v.getContext(),topicstotopicone.class); 
       startActivityForResult(myIntent, 0); 
       break; 
      case R.id.button3: 
       setContentView(R.layout.topic2); 
       break; 
      } 
     } 
    } 

ケース部。

私はまた、コード試してみました:

 Intent myIntent = new Intent (view.getContext(),topicstoquiz.class); 
     startActivityForResult(myIntent, 0); 

をしかし、私はそれが一つの活性に一つだけのボタンからリンクする得るように見えることができます。

私はおそらくこれを完全に間違っているので、別のページにリンクできるように、ページ上の各ボタンを個別のアクティビティにリンクするにはどうすればよいでしょうか。あなたのonCreateで


private OnClickListener yourListener = new OnClickListener(){
public void onClick(View v){
Intent yourIntent = new Intent(yourCurrentActivity.this, classYoureNavigatingToo.class);
startActivity(yourIntent);
}
};


Button button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(yourListener);

が続いてリスナーメソッドを作成

答えて

2

(それは理にかなっている場合)私はこれについて、 "長い道" を行くことを好みますしたがって、ボタンごとに異なるクラスを指す別々のリスナーを設定することができます。それが役立つならば、答えとしてマークすることを忘れないでください!

アップデート:私は上記示したように、あなたのクリックのリスナーを設定し

public class topicstoquiz extends Activity {
/** Called when the activity is first created. */
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.topics);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
Button button4 = (Button)findViewById(R.id.button4);
button2.setOnClickListener(button2Listener);
button3.setOnClickListener(button3Listener);
button4.setOnClickListener(button4Listener);
}

。あなたはあなたのAndroidManifest.xmlであなたの活動を正確に特定していますか?あなたが力を閉じるときにスタックのトレース結果を投稿してください。

+0

Imが失われたが、追加しますか? super.onCreate(savedInstanceState); または protected void onCreate(Bundle savedInstanceState) また、私もそこにあるケースステートメントを取り除く必要がありますか? クイック返信ありがとうございます:) – Crazyfool

+0

メソッドonCreate。 super.onCreate ...はスーパーコールだけです。あなたはあなたのsetContentView呼び出しの後に投稿したコードの最初の部分を置くでしょう。 – bschultz

+0

はい、あなたは私が提示した方法でそれについて行く場合は、ケースステートメントを取り除くだろう。リフトされたnifftyRichサンプルも、あなたが探している結果を提供します。 – bschultz

0
 
Button myButton = (Button) findViewById(R.id.my_button); 
myButton.setOnClickListener (or something like that) 

1

複数のボタンの場合、私は個人的にあなたがしたことに類似したswitch文の方法を好みます。まず、OnClickListnerをアクティビティに組み込み、スイッチを組み込む。その後、アクティビティ内

public class MainActivity extends Activity implements OnClickListener {... 

public void onClick(View view) { 
     Intent i; 

     switch(view.getId()) { 

     case R.id.buttonOneId: 

      i = new Intent(getApplicationContext(), Activity1.class); 
        startActivity(i); 
      break; 

     case R.id.buttonTwoId: 

      i = new Intent(getApplicationContext(), Activity2.class); 
        startActivity(i); 
      break; 
     } 
    } 

は活動のボタンで動作するようにその機能を有効にするには、各ボタンのためにこれを行う:

Button button = (Button) findViewById(R.id.buttonId); 
    button.setOnClickListener(this); 

代替、OnClickListnerが可能次のようにインラインで設定してください。

Button button = (Button) findViewById(R.id.buttonId); 
    button.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      Intent i = new Intent(getApplicationContext(), Activity.class); 
      startActivity(i); 
     } 
    }); 

インライン方法を使用している場合は、他のボタンのコードを繰り返します。

1

また、対応するボタンのXMLレイアウトで設定したandroid:onClick属性を使用することもできます。これにより、スイッチケースを完全に取り外す必要がなくなります。あなたの活動のクラスで

android:onClick="onClickYourFirstButton" 

はのonCreate私はでこれを置くのonClickメソッド

public void onClickYouFirstButton(View v) { 

http://developer.android.com/reference/android/view/View.html#attr_android%3aonClick

関連する問題