从另一个活动重新创建/重新启动活动

     2023-02-16     95

关键词:

【中文标题】从另一个活动重新创建/重新启动活动【英文标题】:recreate /restart activity from another activity 【发布时间】:2015-11-25 04:55:44 【问题描述】:

我看过这个Question,但没有得到好的答案,我的情况有点不同。我有 2 个活动 A 和 B。从活动 AI 启动活动 B 但活动 A 必须保持打开状态,现在在我登录活动 BI 后将一些数据保存在共享首选项中,我需要活动 A 中的布局根据共享首选项值进行更改,因此登录后必须重新创建 Activity A 以应用更改,但仍应位于 Activity B 之后。

所以我的问题是可以从活动 B 重新创建活动 A 吗?

【问题讨论】:

为什么需要重新创建活动 A?为什么不在登录后从活动 B 向活动 A 发送一条消息,告诉活动 A 更新自身。有几种方法可以这样做,但在这种情况下,IMO 最自然的方法是使用 developer.android.com/reference/android/app/…, int) 从活动 A 开始活动 B 【参考方案1】:

我不知道您对“活动 A 必须保持打开”的确切含义,因此您必须弄清楚该部分或提供更详细的解释。你的意思是活动 B 覆盖活动 A 吗?我会假设的。

我建议你在 Activity A 中使用 3 个片段。 一个片段用于初始布局,另一个片段用于新布局。 然后是另一个 Fragment,而不是 Activity B,我称之为 FragmentB。

FragmentB中创建一个回调内部接口。

public interface Callbacks 
    void onLoggedIn();

然后让Activity A实现这个回调

public class ActivityA extends Activity implements FragmentB.Callbacks 

//rest of the activity...

 @Override
    public void onLoggedIn() 

getFragmentManager().beginTransaction()
                            .replace(R.id.container, new SecondFragment())
                            .commit();


显然,您可以为ActivityAFragmentBCallbacksonLOggedInSecondFragment 选择任何您喜欢的名称。 其中SecondFragmentFragmentB登录后包含布局的fragment的名称。

【讨论】:

【参考方案2】:

http://developer.android.com/reference/android/app/Activity.html#StartingActivities

您应该使用startActivityForResult 并在onActivityResult 上更新您的活动,而不是**重新创建*您的活动

例如

 public class MyActivity extends Activity 
     ...

     static final int PICK_CONTACT_REQUEST = 0;

     public boolean onKeyDown(int keyCode, KeyEvent event) 
         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) 
             // When the user center presses, let them pick a contact.
             startActivityForResult(
                 new Intent(Intent.ACTION_PICK,
                 new Uri("content://contacts")),
                 PICK_CONTACT_REQUEST);
            return true;
         
         return false;
     

     protected void onActivityResult(int requestCode, int resultCode,
             Intent data) 
         if (requestCode == PICK_CONTACT_REQUEST) 
             if (resultCode == RESULT_OK) 
                 // A contact was picked.  Here we will just display it
                 // to the user.
                 startActivity(new Intent(Intent.ACTION_VIEW, data));
             
         
     
 

【讨论】:

【参考方案3】:

您的解决方案是从共享首选项中获取值并更新到活动的 OnResume() 方法中的布局,例如 oncreate() 等:

@Override
public void onResume()
    super.onResume();
    // put your code here... to get sharedpreferences


【讨论】:

重新创建的活动是不是记得启动它的原始意图?

...述】:在查看有关使用onSaveInstanceState的文档时,弹出了一个问题。假设我正在使用一个包含多个Activity的应用,而现在我正处于一个由之前的某个Act 查看详情

从通知启动时防止重新创建活动活动

】从通知启动时防止重新创建活动活动【英文标题】:Preventrecreatingaliveactivitywhenlaunchingfromnotification【发布时间】:2020-12-3112:16:39【问题描述】:从AndroidOreo8.0(26API)开始,当使用代码启动Activity时,如果之前的实例没有被销毁并... 查看详情

从通知意图启动活动时重新创建 Android ViewModel

...布时间】:2020-11-1011:17:54【问题描述】:我正在尝试创建一个计时器应用程序。当用户按下定时器时,它会创建一个定时器正在运行的通知。我正在使用视图模型来存储我的视图数据。我想要的是当计时器启动并创建通知时,当 查看详情

更新变量值并再次重新启动活动

...【发布时间】:2017-10-2318:32:49【问题描述】:我正在创建一个应用程序,其中一个活动有四个按钮button_total=4,连续两个button_row=2我想要实现的是当用户点击第四个按钮时,按钮应该变成总共九个,连续三个。我创建了变量button_... 查看详情

在方向更改后重新创建活动之前更改意图包数据

...ionchange【发布时间】:2010-11-1510:32:20【问题描述】:我有一个通知,它启动我的活动并使用意图的putExtra()函数传递消息。然后该消息在活动的onCreate函数中显示给用户。当应用程序由于方向改变而重新启动时,消息会再次显 查看详情

在没有重新加载活动/布局之前启动活动

...发布时间】:2019-09-1112:19:48【问题描述】:我想在你按下一个条目时开始一个新的活动。当前Activity是一个ListView,其中包含在滚动时自动加载的项目(无限滚动)。只要点击一个条目,就会打开一个新的活动(或布局?)(在... 查看详情

如果重新创建活动,是不是会调用 onNewIntent 或 onActivityResult?

...布时间】:2019-10-3004:03:11【问题描述】:我的活动A在另一个应用程序中启动了一个活动B,用户可 查看详情

Android:当应用程序被销毁和重新创建时总是启动启动活动

】Android:当应用程序被销毁和重新创建时总是启动启动活动【英文标题】:Android:alwayslaunchstartactivitywhenappisdestroyedandrecreated【发布时间】:2015-10-0813:59:13【问题描述】:假设我有两个活动,A和B。A-是我的启动活动,它还处理初... 查看详情

Android - 在活动重新创建期间是不是保留了意图?

...【发布时间】:2013-03-0302:04:42【问题描述】:我正在构建一个android应用程序,并想询问启动活动的意图(可通过getIntent()方法访问)是否在活动重新创建期间被保存/保存,例如设备方向,或 查看详情

当活动从后台(暂停)到前台时重新创建 Android 活动

...-3121:22:21【问题描述】:您好,Android专业人士,我遇到了一个关于某个活动生命周期的小问题。我一步一步提到了我的问题:-从主屏幕启动带有应用图标的应用。在活动A的recyclervie 查看详情

重新创建一个活动并传递参数

】重新创建一个活动并传递参数【英文标题】:Recreateanactivityandalsopassarguments【发布时间】:2016-12-1000:30:36【问题描述】:我有一个监听偏好变化并重新加载应用程序的活动。我正在使用recreate()来做到这一点。但我不知道如何通... 查看详情

如何修复在 Android 中崩溃的活动的重新启动?

...组有4个单选按钮。答案是数据库查询的结果。我添加了一个重启按钮和一个OnClickListener。我想当有人点击按钮时,重新开始我的活动。当应用程序第一次启动时,它工作正常,但 查看详情

当应用程序重新启动并最小化时启动新活动

...06-1122:32:05【问题描述】:第一次提问,请客气:)我想创建一个应用,当您接到来电时会向您显示一条消息(通过启动一个新Activity)。我做到了,除了一个问题。当我第一次启动应用程序时:1)我必须在应用程序运行前打个电话... 查看详情

PendingIntent.FLAG_UPDATE_CURRENT 重新创建活动

...sActivity【发布时间】:2019-09-2102:40:43【问题描述】:我有一个通知,当我点击它时,如果它仍未运行,我想启动应用程序,但如果应用程序已经运行,我不想重新启动它。所以,我在创建PendingIntent时使用了PendingIntent.F 查看详情

重新创建活动时如何从 AsyncTask 更新 TextView

...中有myProgressTextView。在MainActivity中,我使用asyncTask启动了一个长进程:MyTask.execute(getApplic 查看详情

重新创建活动时出现 SQLiteDatabase 错误

...后重新创建它。重新创建活动时抛出异常:尝试重新打开一个已经关闭的对象:SQLiteDatabase:活动 查看详情

应用程序从错误的活动重新启动

...gactivity【发布时间】:2015-04-0717:18:44【问题描述】:这是一个难题:我打开我的应用程序。它启动一个作为启动屏幕(ASplashscreen)的活动,我在其中从本地存储(raw文件夹)加载一些JSON数据并将其存储在内存中的singletonobject(静态)中... 查看详情

从服务调用时活动重新启动

...时间】:2019-02-2704:10:15【问题描述】:我的应用程序中有一个浮动按钮服务(如facebookmessenger)当点击时,我的活动从后台返回,但它不会以与缩小时相同的方式返回,它会再次调用onCreate,知道导致这种行为的原因吗?在我的... 查看详情