如何根据调用第一个活动的不同活动更改活动的TextView的值?

时间:2012-03-13 15:12:55

标签: android

我需要创建一个逻辑,这将减少Android项目中的代码大小。假设我有一个Activity C.活动C有一个TextView,其值为" Hello"。还有另外两个活动A& B.现在,如果按钮上的活动A单击调用活动C,则TextView的值必须更改为"你好吗?"如果活动B调用活动C,则TextView值将为"我很好"。

所以,我的问题是,如何检测哪个Activity正在调用Activity C并在运行时相应地更改TextView的文本?

任何形式的帮助都将受到赞赏。

5 个答案:

答案 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
}

}