我需要创建一个逻辑,这将减少Android项目中的代码大小。假设我有一个Activity C.活动C有一个TextView,其值为" Hello"。还有另外两个活动A& B.现在,如果按钮上的活动A单击调用活动C,则TextView的值必须更改为"你好吗?"如果活动B调用活动C,则TextView值将为"我很好"。
所以,我的问题是,如何检测哪个Activity正在调用Activity C并在运行时相应地更改TextView的文本?
任何形式的帮助都将受到赞赏。
答案 0 :(得分:2)
除了其他回复。您只能发送消息文本,并在活动C中删除条件检查。
调用活动C:
Intent i = new Intent(this, ActivityC.class);
i.putExtra(ActivityC.MESSAGE_KEY, "How are you?");
startActivity(i);
或
Intent i = new Intent(this, ActivityC.class);
i.putExtra(ActivityC.MESSAGE_KEY, "I am fine");
startActivity(i);
在ActivityC中:
public final static String MESSAGE_KEY = "com.package.name.ActivityC.message";
@Override
protected void onCreate() {
...
String message = getIntent().getStringExtra(MESSAGE_KEY);
if (message != null) {
textView.setText(message);
}
...
}
答案 1 :(得分:0)
你可以让调用活动发送一个包以及意图,并在其中发送调用活动的名称。
然后,被调用的活动可以读取包的内容,以了解哪个活动已调用它并相应地显示数据。答案 2 :(得分:0)
您可以在开始时使用Intent发送额外内容。
就像从B
中调用它一样 add intent.PutExtra("VARIABLE NAME","called from B");
如果从A
调用 add intent.PutExtra("VARIABLE NAME","called from A");
并且可以通过
在Activity C中获取此变量值 String calledFrom = getIntent().getStringExtra("VARIABLE NAME");
你可以从它调用的地方检查calledFrom字符串值。
答案 3 :(得分:0)
您可以在活动之间传递数据
,例如
Intent intent = new Intent(A.this,C.class);
因为Intent需要两个参数 Context和Class refreing到预期的已启动Activity befor classing startActivity();方法只需添加一个引用类
的整数intent.putExtra("src",1);
C活动中的
Intent intent = getIntent();
if (intent.getExtra("src").equals("1"))
textView.setText("how are you?")
else if (intent.getExtra("src").equals("2"))
textView.setText("fine thanks")
答案 4 :(得分:0)
您需要将一些数据发送到活动C,以便您可以处理谁正在调用此C活动:
Intent i = new Intent(this , C.class);
i.putExras("from" , "a");
startActivity(i);
Intent i = new Intent(this , C.class);
i.putExras("from" , "b");
startActivity(i);
在活动C上,您需要阅读这些值并检查如下:
onCreate(){
String from = getIntent().getStringExtras("from");
if(from.equals("a")){
//came from a
} else if(from.equals("b")){
//came from b
}
}