【问题标题】:Do Activity changes, based on the calling activity根据调用活动进行活动更改
【发布时间】:2014-04-11 14:00:52
【问题描述】:

我正在使用启动活动来打开另一个活动并返回包含额外内容的意图。

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

假设我们有 活动A 活动 B 活动 C 是活动 A 和 B 开始的结果。

我想知道我是否可以说明,如果从活动 A 启动 C,C 会显示一个隐藏的微调器。如果是 B 启动了 C,则微调器保持隐藏状态。

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

有没有办法做到这一点?

【问题讨论】:

标签: android view android-activity


【解决方案1】:

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


将以下代码写入 Activity 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?

【讨论】:

    【解决方案2】:

    看看这个:http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, int)

    你传入一个 resultCode int。为什么不在活动 C 中检查该值并根据它设置微调器?或者,您可以只传递带有您检查的某些值的 Bundle。

    【讨论】:

    • 这与问题无关。请求代码未到达已启动的活动
    【解决方案3】:

    活动 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
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 1970-01-01
      • 2023-03-25
      • 2010-11-05
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      相关资源
      最近更新 更多