[英]How to check which button is Clicked with android?
我有2个活动,第一个活动包含两个按钮,第二个活动也包含2个按钮。 当我单击第一个活动的第一个按钮时,我需要启动第二个活动,第二个活动的第一个按钮变为“不可见”,第二个按钮变为“可见”。 再次,如果用户返回到第一个活动并单击第二个按钮,则第二个活动开始,其中第二个按钮变为“不可见”,第一个按钮变为“可见”。
我只需要知道如何确定用户按下第一个活动中的哪个按钮即可。 有什么具体方法,或者有什么方法吗?
我尝试通过在第一个活动中将变量(int i)设置为全局变量来完成此操作,如果用户单击第一个按钮,则此(i)更改为1(Same Thing to Second Button),并且在第二个活动将此(i)变量称为:
MainActivity a=new MainActivity();
if(a.i==0){
//do this
}
else if(a.i==1){
//do this
}
但这是行不通的,并且第二个活动始终获得此(i),因为它等于(0)。
您应该使用Intent开始第二个活动。 为此,您可以添加一些参数。 在您的第一个活动中:
Button b1 = (Button)findViewById(R.id.button1);
Button b2 = (Button)findViewById(R.id.button2);
// Set OnClickListeners
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Start Activity
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("buttontohide", 0); // Hide Button 0
startActivity(intent);
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Start Activity
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("buttontohide", 1); // Hide Button 1
startActivity(intent);
}
});
在您的第二个活动中:
Intent myIntent = getIntent();
int i = myIntent.getExtras().getInt("buttontohide");
您可以在开始第二个活动之前将参数传递给extra。 用它告诉第二个活动单击了哪个按钮。 在第二个活动的onCreate()方法中,进行额外分析,以定义必须隐藏的按钮。
MainActivity a = new MainActivity();
您正在重新初始化Activity
。 但在您的情况下,请改用static
变量。
做这样的事情。
在您的MainActivity.java
声明一个static
变量
public class MainActivity extends Activity {
public static int a = 0;
// Rest of your code
}
现在从第二个活动中检查值是0还是1这样
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
if(MainActivity.a == 0) { /*Do something*/ }
else { /*Do something*/ }
}
}
我假设您了解所有代码,如何使按钮可见和不可见。 首先在您的第一个活动中声明一个int变量,然后使用getIntent将其传递给第二个活动,然后使用if逻辑捕获您的变量值并放置代码以使按钮不可见。
您可以使用Bundle将数据从活动A传递到活动B:
在活动A中:
... onClick() {
...
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("ButtonNR", iButtonNR);
startActivity(intent);
}
在活动B中:
public class ActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Bundle bundle = getIntent().getExtras();
int iButtonNR = bundle.getInt("ButtonNR");
switch (iButtonNR) {
case 0:
//do something...
break;
case 1:
//do another thing...
break;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.