android - 从浏览器返回时应用程序崩溃

标签 android android-fragments

我有 Main Activity 可以打开这样的 fragment 。

Fragment fragment = null;

FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

switch (position) {
case 0:
    fragment = new MyFragment();
    break;
default:
    break;
}

if (fragment != null) {
    fragmentManager.beginTransaction().replace(R.id.frame_container,fragment).commit();

}

此 fragment 包含一个 ListView 。在点击列表项 New Activity Opened like this.

Intent intent = new Intent(getActivity(), MyActivity.class);
startActivity(intent);

从这个 Activity 中,我在浏览器中打开了一个这样的链接。

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);

问题来了。如果我们打开一个简单的 Web 链接,它可以正常工作,但如果链接包含 Play Store 的应用程序链接,则从浏览器返回时应用程序会崩溃。在 Htc 和 Nexus 设备上,它运行良好,但在三星 S3 上,应用程序在从浏览器返回时崩溃。

从调试中我发现我的 Main fragment 在 Samsung S3 设备上是空的。

我的 Log Cat 显示了这一点。

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.codenterprise.CashbackKorting/com.codenterprise.left.fragment.shops.ShopComplateDetailActivity}: java.lang.NullPointerException
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
    at android.app.ActivityThread.access$600(ActivityThread.java:140)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4898)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
    at com.codenterprise.general.Services.<init>(Services.java:74)
    at com.codenterprise.general.Services.<init>(Services.java:70)
    at com.codenterprise.left.fragment.shops.ShopComplateDetailActivity.onCreate(ShopComplateDetailActivity.java:90)
    at android.app.Activity.performCreate(Activity.java:5206)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)

谢谢

最佳答案

当您的应用程序进入后台时,内存较少的设备会终止您的应用程序以节省内存。因此,请尝试在进入浏览器之前和之后保存和恢复应用程序的状态,如下面的代码所示

保存状态

 @Override
 protected void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
 }

并在同一 Activity 中检索它

@Override
 protected void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
 }

关于android - 从浏览器返回时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26190450/

相关文章:

java - 如何使取消按钮在 android web View 中链接的 sdk 调用中工作?

android - 获取 Facebook 好友列表 - Android

android - 显示关闭时的触摸事件

android - 将 SQLite 数据导出到 SD 卡 - 找不到文件异常

java - 在 Android 上使用 iText 将 HTML 转换为 PDF。如何设置 UTF-8(变音符号)?

android - 更改 fragment 中文本的适配器不起作用

java - Android 相机拍摄分辨率

android - 如何将参数从 Activity 传递给 Fragment

java - 带有 fragment 的 Android Espresso 功能测试

c# - 从 Fragment 调用 Activity 方法