2017-10-21 11 views
-3

私はAndroidには新しく、1つのボタンを2つのアクティビティで開くようにしようとしていますが、私には効果がありません。 EX用 :Mainacitivity上 が、そこbtn_mathematicsがあるとbtn_physics同じ活性(Main2acitivity)を開き、btn_semester1btn_semester2を見つけ、各ボタンは、学期モジュールの2つのその他の活動を開きます。条件付きのボタン

Mainacitivity上のユーザーがクリックした場合:btn_semester1同じボタンをクリックした場合 btn_mathematics --->btn_semester1 --->ModulesMAT となります。 btn_physics --->btn_semester1 --->ModulesPHYを持っています。

MainActivityのXML:

<Button 
    android:id="@+id/btn_mathematics" 
    android:onClick="btn_mathematics" 
    android:text="@string/btn_mathematics/> 

<Button 
    android:id="@+id/btn_physics" 
    android:onClick="btn_physics" 
    android:text="@string/btn_physics"/> 

Main2ActivityのXML:

<Button 
    android:id="@+id/btn_semester1" 
    android:onClick="btn_semester1" 
    android:text="@string/btn_semester1"/> 

<Button 
    android:id="@+id/btn_semester2" 
    android:onClick="btn_s2" 
    android:text="@string/btn_semester2"/> 

私は、ModulesMATとModulesPHYのために他の人にそのかなり類似したXMLを追加する必要はありませんことを推測します。

となりましたJavaコード:

MainActivity.java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void btn_mathematics (View v) { 
     Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
     startActivity(intent); 
    } 

    `public void btn_physics (View v) { 
     Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
     startActivity(intent); 
    } 


} 

Main2Activity.java:あなたがに認識するためのIDを渡すことができMainActivityで

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
} 



public void btn_semester1 (View v) 
{ 
    Intent i = getIntent(); 
    String id = i.getStringExtra("id"); 
    if(id == "btn_mathematics") 
    { 
     i = new Intent(this, ModulesMAT.class); 
     startActivity(i); 
    } 
    else if (id == "btn_physics") 
    { 
     i = new Intent(this, ModulesPHY.class); 
     startActivity(i); 
    } 

} 


public void btn_semester2 (View v) 
{ 
    Intent i = getIntent(); 
    String id = i.getStringExtra("id"); 
    if(id == "btn_mathematics") 
    { 
     i = new Intent(this, ModulesMAT2.class); 
     startActivity(i); 
    } 
    else if (id == "btn_physics") 
    { 
     i = new Intent(this, ModulesPHY2.class); 
     startActivity(i); 
    } 

} 
+0

あなたは 'Intent'を通じて活動の間でデータを渡すことができます。ここに例がありますhttps://stackoverflow.com/a/2091482/1552587 – Titus

+0

コメントありがとう、私のコードの例がありますか? – itray

答えて

1

Main2Activity。
MainActivity

public void btn_mathematics (View v) { 
     Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
     Bundle bundle = new Bundle(); 
     bundle.putString("id","Math"); 
     intent.putExtra(bundle); 
     startActivity(intent); 
    } 

public void btn_physics (View v) { 
    Intent intent = new Intent(MainActivity.this, Main2Activity.class); 
    Bundle bundle = new Bundle(); 
    bundle.putString("id","Physics"); 
    intent.putExtra(bundle); 
    startActivity(intent); 
} 

Main2Activity

String id; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 

    Bundle bundle = getIntent().getExtras(); 
    id= bundle.getString("id"); 
} 

public void btn_semester1 (View v) 
{ 
    if(id == "Math") 
    { 
     i = new Intent(this, ModulesMAT2.class); 
     startActivity(i); 
    } 
    else if (id == "Physics") 
    { 
     i = new Intent(this, ModulesPHY2.class); 
     startActivity(i); 
    } 

} 


public void btn_semester2 (View v) 
{ 
    if(id == "Math") 
    { 
     i = new Intent(this, ModulesMAT2.class); 
     startActivity(i); 
    } 
    else if (id == "Physics") 
    { 
     i = new Intent(this, ModulesPHY2.class); 
     startActivity(i); 
    } 

} 
+0

'=='の代わりに '...'を比較するには '... equals(...)'を使うべきです – Titus

+0

あなたは私に助けてくれました。ありがとう、 コード: 'if(id ==" Math ") { i = new Intent(this、ModulesMAT2.class); startActivity(i); } else if(id == "Physics") { i = new Intent(this、ModulesPHY2.class); startActivity(i); } } 私は を持っています(シンバル 'i'を解決できません) – itray

+0

それぞれの前にインテントを追加するだけです。 Like:Intent i =新しいインテント(this、ModulesMat2.class); –