根据哪个按钮打开Activity更改动作?

时间:2017-07-28 04:35:48

标签: java android button

我正在尝试制作一个询问用户数学问题的应用。我有许多按钮,例如乘法,加法等。我希望我的代码有一系列if / else语句,告诉它根据上一个活动中点击了哪个按钮来使用哪个操作符。

我可以使用什么来访问此信息?

3 个答案:

答案 0 :(得分:2)

您始终可以使用Extra将参数传递给You活动,并根据其值执行某些操作。

int extraValue = 5;

Intent i = new Intent();
i.putExtra("EXTRA_NAME", extraValue);
startActivity(i);

然后您可以在目标活动中通过其名称获取此额外内容。

extraValue = getIntent().getIntExtra("EXTRA_NAME", -1); // here -1 is default value.

答案 1 :(得分:0)

只需将按钮ID放在intent中即可。像这样;

Intent i=new Intent(context,MyActivity.class);
i.putExtra("button_id", buttonID);
context.startActivity(i);`

然后在你的活动中;

Intent I =get intent();
Int buttonID = intent.getIntExtra("button_id");

答案 2 :(得分:0)

新活动始终由意图启动。如果我们想要使用某些信息启动活动,我们可以将其用于启动它的那个intent。启动活动中的getIntent()方法可以捕获此意图。

示例:

在您的第一项活动中:

intent = new Intent(MainActivity.this,SecondActivity.class);
    switch(radioGroup.getCheckedRadioButtonId()){
        case R.id.add:
            intent.putExtra("operator","add");
            startActivity(intent);
            break;
        case R.id.subtract:
            intent.putExtra("operator","subtract");
            startActivity(intent);
            break;
        case R.id.multiply:
            intent.putExtra("operator","multiply");
            startActivity(intent);
            break;
        case R.id.divide:
            intent.putExtra("operator","divide");
            startActivity(intent);
            break;
    }

在你的第二项活动中:

public class SecondActivity extends AppCompatActivity {

Intent intent;

@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);

    intent = getIntent();
    String operation = intent.getStringExtra("operator");

    switch(operation){
        case "add":
            //your code
            break;
        case "subtract":
            //your code
            break;
        case "multiply":
            //your code
            break;
        case "divide":
            //your code
            break;
    }

}

}