根据调用活动更改活动

时间:2014-04-11 14:00:52

标签: android view android-activity

我正在使用start活动结果打开另一个活动并返回包含额外内容的intent。

无论如何,我想知道以下是否可行。 我将举一个例子,让我更容易理解我在做什么。

让我们说 活动A. 活动B. 和活动C,即活动A和B开始的结果。

我想知道我是否可以陈述,如果从活动A推出C,C揭示了一个隐藏的微调器。如果它是B发射C,则旋转器仍然隐藏。

基本上,活动C根据启动它的活动而变化。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:0)

检查出来:http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,int)

传入resultCode int。为什么不在Activity C中检查该值并根据它设置微调器?或者,您可以使用您检查的某个值传递Bundle。

答案 1 :(得分:0)

活动A:执行此操作

Intent intent = new Intent();
intent.setClass(this, Other_Activity.class);
intent.putExtra("HIDE_SPINNER", false);
startActivity(intent);

活动B:做到这一点

Intent intent = new Intent();
intent.setClass(this, Other_Activity.class);
intent.putExtra("HIDE_SPINNER", true);
startActivity(intent);

活动C:执行此操作

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Bundle extras = getIntent().getExtras();
  if (extras != null) {
   Boolean shouldHide = extras.getBoolean("HIDE_SPINNER");
   if (shouldHide ) {
        // hide it
   } else {
        // show it
   }
}

答案 2 :(得分:0)

您可以使用getCallingActivity()方法完成任务。 从中读取班级名称,并与ActivityAActivityB的名称相匹配。


将以下代码写入活动C。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ....

    // Below is code to setup
    String callingActivity = getCallingActivity().getShortClassName().replace(".", "");
    if (ActivityA.class.getSimpleName().equals(callingActivity)) {
        // Activity has been called by Activity A
    } else if (ActivityB.class.getSimpleName().equals(callingActivity)) {
     // Activity has been called by Activity B
    }
}

其他资源包括how to know the calling activity in androidHow to know if an activity is called using startActivityForResult or simply called by using startActivity?