2012-03-13 73 views
0

我需要创建一个逻辑来减少Android项目中的代码大小。假设我有一个活动C.活动C有一个TextView,其值为“Hello”。还有另外两个活动A & B.现在,如果按钮上的活动A单击调用活动C,那么TextView的值必须更改为“您好吗?”。如果活动B调用活动C,则TextView值将为“我很好”。如何根据不同的Activites调用第一个活动来更改活动的TextView的值?

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

任何形式的帮助将不胜感激。

回答

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); 
    } 
    ... 
} 
0

你可以让调用活动发送一个包含意图的包以及其中的调用活动的名称。

被调用的活动然后可以读取该包的内容以知道哪个活动调用了它并相应地显示数据。

0

你可以发送额外的意图在开始活动。

当你的B

add intent.PutExtra("VARIABLE NAME","called from B"); 

调用它,如果从A

add intent.PutExtra("VARIABLE NAME","called from A"); 

调用,可以通过

String calledFrom = getIntent().getStringExtra("VARIABLE NAME"); 

你可以检查得到您的活动C这个变量的值一样称为从所调用的字符串值开始。

0

可以传递之间活动

Intent intent = new Intent(A.this,C.class); 

因为意图需要两个参数 语境与类refreing到数据的预期开始活动 befor分级startActivity();方法只是在C活性增加一个整数指的类

intent.putExtra("src",1); 

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") 
0

你需要一些数据发送到活动ç这样你就可以处理谁在调用这个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 
} 

} 
相关问题