我想将putExtras
与getExtras中的if语句一起使用。如果在第一个活动中单击图像,它应该执行一个动作,但是当我在第一个活动中单击其他图像时,它应该执行另一个动作。
这是我的代码,代码可以工作,但不知道如何区分下一个活动中的动作:
public class wuu extends AppCompatActivity {
TextView t1, t2, t3, t4, t5, t6, t7, t8, t9;
frix_wuxu aa = new frix_wuxu();
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wuu);
t1 = (TextView) findViewById(R.id.first);
t2 = (TextView) findViewById(R.id.second);
final Bundle extras = new Bundle();
extras.putString("abc", "a");
extras.putString("name", "b");
t1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(wuzu.this, frix_wuxu.class);
intent.putExtras(extras);
startActivity(intent);
}
});
t2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(wuzu.this, frix_wuxu.class);
intent.putExtras(extras);
startActivity(intent);
}
});
}
}
答案 0 :(得分:0)
在下一个活动中,如果您想知道哪个动作(基于单击哪个按钮),则可以在其中添加一个字符串,例如
t1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(wuzu.this, frix_wuxu.class);
intent.putExtras(extras);
intent.putExtra("action", "first");
startActivity(intent);
}
});
t2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(wuzu.this, frix_wuxu.class);
intent.putExtras(extras);
intent.putExtra("action", "second");
startActivity(intent);
}
});
在下一个活动中
public class NextActivity extends AppCompatActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
String action = getIntent().getStringExtra("action");
if (action.equals("first")) {
Log.i("TAG", "First button is clicked");
} else if (action.equals("second")) {
Log.i("TAG", "Second button is clicked");
}
}
}
答案 1 :(得分:0)
您只需要在putExtra
中添加另一个值作为标志。通常,您可以通过使用如下枚举来实现它:
public Enum Action {
ONE, TWO
}
然后将其添加到您的Extra中:
final Bundle extras = new Bundle();
extras.putString("abc", "a");
extras.putString("name", "b");
// add the action
extras.putSerializable("action", Action.ONE);
更好的方法是将全部数据和Action
打包为pojo,如下所示:
// You can also use Parcelable instead of Serializable.
public class MyData implement Serializable {
private String abc;
private String name;
private Action action;
// constructor
// setter
// getter
}
然后您可以将其用于其他功能:
MyData myData = new MyData();
myData.setAbc("a");
myData.setName("b");
myDaya.setAction(Action.ONE);
final Bundle extras = new Bundle();
extras.putSerializable("myData", myData);
要在下一个活动中阅读它,可以使用以下方法:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
MyData myData = (MyData) bundle.getSerializable("myData");
// then do something by the action:
switch (myData.getAction) {
case ONE:
// do something
break;
case TWO:
// do something
break;
}