Java 了解上一个活动中单击的按钮
我在一个活动上有三个按钮,每个按钮在单击时都会启动活动,但我的问题是如何知道哪个按钮启动了活动 更新:Java 了解上一个活动中单击的按钮,java,android,android-activity,Java,Android,Android Activity,我在一个活动上有三个按钮,每个按钮在单击时都会启动活动,但我的问题是如何知道哪个按钮启动了活动 更新: btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { SharedPreferences prefs = PreferenceManager
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();
}
有很多方法可以做到这一点,但最简单的方法可能就是发送带有
意图的额外的
在课堂上
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");
}
您也可以使用,但根据您的需要,这可能有些过分
使用意图附加功能。例如:
内部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);
}
然后我应该使用if语句,比如:if(clicked.equal(“btn1”){//do something}?是的,但是你需要使用它。你可以通过意图传递字符串,int
,任何你想要的。它会显示文档中的所有方法。如果你这样做if(“btn1.equals”(clicked)){
它可以防止出现NPE
。请确保在onCreate()
之前不要调用getIntent()或者它将是null
。非常感谢您,但您所说的:NPEnull指针异常是什么意思?
。这意味着如果单击
是null
,出于某种原因,它不会以这种方式抛出异常。另一种方式它会抛出异常。为什么它在返回“单击”时返回空toast消息但是我确信我已经点击了按钮1,类型意图中的getIntExtra(String,int)方法不适用于参数(String)