2014-02-10 65 views
-1

我有一个activity_A上的三个按钮,每个按钮时单击它启动activity_B,但我的问题是如何知道哪个按钮启动activity_B?知道哪个按钮被点击从以前的活动

更新:

  btn1.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       SharedPreferences prefs = PreferenceManager 
         .getDefaultSharedPreferences(LastDaysActivity.this); 
       prefs.edit().putString("Date1", btn1.getText().toString()).apply(); 


       Intent i = new Intent(LastDaysActivity.this, TabHostActivityLastDays.class); 
       i.putExtra("button", "1"); 
       startActivity(i); 



      } 
     }); 

活动B:

 Toast.makeText(BatteryActivityLastDays.this, String.valueOf(my.getLastDaysValues(result1, 10)), Toast.LENGTH_SHORT).show(); 

    String intent = this.getIntent().getStringExtra("button"); 
    if (intent != null) 
    { 

     Toast.makeText(BatteryActivityLastDays.this , intent , Toast.LENGTH_SHORT).show(); 
    } 

回答

1

可能有很多方法可以做到这一点,但可能是最容易就是通过与Intent发送extra

在发送级别类似,

Intent i = new Intent(..., ...); // obviously replace ... with the class and context 
i.putExtra("button", "btn1"); 
startActivity(i); 

,并在接受类

Intent intent = getIntent(); 
if (intent != null) 
{ 
    String clicked = intent.getStringExtra("button"); 
} 

你也可以使用SharedPreferences但是这可能是矫枉过正,这取决于你所需要的。

Intent Docs

+0

然后我应该使用如果statment像:如果(clicked.equal( “BTN1”){//do something} ..? – user3245658

+0

是的,但是你需要使用它,你可以通过Intent传递一个'String','int',它显示了文档中的所有方法。你需要做'if(“btn1”.equals(clicked)){'它可以防止'NPE'。确保你在'onCreate()'之前不调用'getIntent h作为方法的外部),否则它将为'null'。 – codeMagic

+0

thanx you very much,但是你的意思是:NPE – user3245658

0

使用意向演员。例如:

内部的onClick方法:

Intent activityBIntent = new Intent(ActivityA.this, ActivityB.class); 
activityBIntent.putExtra("button_clicked", 1); 
startActivity(activityBIntent); 

和activityB的onCreate方法:

Intent intent = getIntent(); 
if (intent != null){ 
    int buttonId = intent.getIntExtra("button_clicked", 0); 
} 
+0

Intent类型的方法getIntExtra(String,int)不适用于参数(String) – user3245658

相关问题