【问题标题】:Android get previous activityAndroid获取以前的活动
【发布时间】:2011-11-14 09:30:24
【问题描述】:

我有 2 个活动:Activity1Activity2。 在每个活动中,都有一个按钮可以引导我进入第三个活动 (MainActivity)。在MainActivity 我想知道是从哪个活动页面调用的。

【问题讨论】:

  • +1 - 同意@variant-45,将int 或其他任何东西作为来自调用者Activity 的标志
  • 添加活动标志以识别而不是将意图放入 mainActivity 并请亲爱的将代码放入问题中......所以任何人都可以回复

标签: android android-activity


【解决方案1】:

可以使用 Intent 的 putExtra 属性来传递 Activity 的名称。

通话活动,

Intent intent = new Intent(this, Next.class);
intent.putExtra("activity","first");
startActivity(intent);

下一个活动,

Intent intent = getIntent();
String activity = intent.getStringExtra("activity");

现在在字符串活动中,您将获得它来自哪个活动的名称。

【讨论】:

  • 如果调用activity不是来自同一个应用?
  • 但是如果你重构活动的名称,你可能会错过它。我更喜欢内置的东西。从android的API调用一个方法。类似于“getCallingActivity()”。
【解决方案2】:

你可以使用:

public ComponentName getCallingActivity()

了解哪个 Activity 调用了您当前的Activity

【讨论】:

  • 仅当您以startActivityForResult() 开始活动时才有效,而不是startActivity()
【解决方案3】:

使用 putExtra() 来识别之前的活动。

Intent i = new Intent(Activity1.this, MainActivity.class).putExtra("from", "activity1");
startActivity(i);

要检查主活动中的活动,

if(getIntent().getStringExtra("from").equals("activity1")){
//From Activity 1
}else {
// Activity 2
}

【讨论】:

    【解决方案4】:

    当您从一个活动移动到另一个活动时,您可以传递活动名称,如下所示

    Intent i = new Intent(this, deliveries.class);
    i.putExtra("ActivityName", "ActivityOne");
    startActivity(i);
    

    并检查其他活动中的活动名称

    Bundle extra = getIntent().getExtras();
    String activityName = Long.parseLong(extra.getSerializable("ActivityName")
    toString());
    

    我认为它可以解决你的问题

    【讨论】:

      【解决方案5】:

      当你开始你的活动时:

      Intent intent = new Intent(activity, HistoryDetailsResults.class);
       intent.putExtra(Activity.ACTIVITY_SERVICE, activity.getLocalClassName());
       activity.startActivity(intent);
      

      使用Activity.ACTIVITY_SERVICE 我假设您使用了一个好的做法。 (Activity.ACTIVITY_SERVICEString : 'activity'

      activity.getLocalClassName() 给出这个:view.YourActivity as String

      编辑:而不是使用活动activity.getLocalClassName() 我更喜欢使用activity.getClass().getSimpleName()

      开始活动的第 1 步

      Intent intent = new Intent(activity, HistoryDetailsResults.class);
       intent.putExtra(Activity.ACTIVITY_SERVICE, activity.getClass().getSimpleName());
       activity.startActivity(intent);
      

      目标活动的第 2 步

      Intent intent = getIntent();
      String startActivity = intent.getStringExtra(Activity.ACTIVITY_SERVICE)
      String activityToCompare = YourActivityToCompare.class.getSimpleName()
      

      还有你想做什么:

      if( startActivity.equalsIgnoreCase(activityToCompare) {
          //Do what you want
      }
      

      【讨论】:

        猜你喜欢
        • 2017-09-02
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-22
        • 2022-09-28
        • 2015-11-29
        • 1970-01-01
        相关资源
        最近更新 更多