相关疑难解决方法(0)

savedInstanceState始终为null

这是我的savedInstaceState代码:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) 
{
    savedInstanceState.putStringArrayList("todo_arraylist", Altodo);
    Log.v("bundle", "Saved");
    super.onSaveInstanceState(savedInstanceState);
}


public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) 
    {
        Altodo = savedInstanceState.getStringArrayList("todo_arraylist");
        Log.v("bundle", "Restored");
    }
    else
    {
        Log.v("bundle", "null");
    }

    setContentView(R.layout.main);
}
Run Code Online (Sandbox Code Playgroud)

日志始终显示"捆绑保存"标记.

但在onCreate方法中,SavedInstanceState始终为null.

android

68
推荐指数
4
解决办法
5万
查看次数

为什么永远不会调用onRestoreInstanceState()

我试图在我的活动中保存数据而不是恢复它.我保存数据onSaveInstanceState()然后我尝试恢复数据onRestoreInstanceState().

我设置断点,方法onSaveInstanceState()被调用.但是,onRestoreInstanceState()onCreate()从来没有.

这是我的步骤:

  1. 开始我的Activity.
  2. 按手机上的"主页"按钮.onSaveInstanceState()被叫.
  3. 单击启动器中的图标并Activity再次启动我.

这时,只能onRestart()打电话.但不是onRestoreInstanceState()onCreate().

有谁知道为什么?

android

36
推荐指数
3
解决办法
3万
查看次数

如何模拟杀戮活动以节省内存?

Android医生说:

"当系统而不是用户关闭活动以节省内存时......"

但是如何模拟这种情况?我想调试onRestoreInstanceState(Bundle)方法,但不知道如何.

android activity-lifecycle onrestoreinstancestate

34
推荐指数
4
解决办法
1万
查看次数

onSaveInstanceState没有保存我的值(onCreate输入Bundle总是为null)

保存包(活动A):

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putString("test", "value");
    super.onSaveInstanceState(outState);
}
Run Code Online (Sandbox Code Playgroud)

导航到活动B;

startActivity(new Intent(getBaseContext(), B.class));
Run Code Online (Sandbox Code Playgroud)

回到活动A:

startActivity(new Intent(getBaseContext(), A.class));
Run Code Online (Sandbox Code Playgroud)

试图在活动A中加载我写入bundle的值:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

Log.d("MY", "saved instance is null"+ Boolean.toString(savedInstanceState == null));
}
Run Code Online (Sandbox Code Playgroud)

返回总是savedInstanceState = null.我在这里缺少什么?

当我返回主活动时,永远不会触发onRestoreInstanceState

android android-activity

14
推荐指数
2
解决办法
2万
查看次数

Android模拟器:由于内存不足而模拟进程重启的简便方法?

正如我刚才所了解的那样,Android保留随时终止后台应用程序进程的权利,以便回收RAM.该应用程序仍在运行,并仍然可以恢复,但我所有的静态变量都不见了(见文章).

我想在这种情况下模拟我的应用程序的行为.最简单的方法是什么?当然,必须有一种更简单,更可预测的方式,而不是编写一些分配大量内存的应用程序.

memory android process emulation multitasking

14
推荐指数
2
解决办法
1万
查看次数

更换片段时如何防止"java.lang.IllegalStateException:Fragment already added"?

尽管我努力防止碎片被多次添加,但我还是继续遇到java.lang.IllegalStateException: Fragment already added: VideoFragment.

我有一个活动,其中仅在onCreate中实例化VideoFragment.在我尝试显示VideoFragment的唯一地方,我首先检查是否已添加此片段.

private VideoFragment videoFragment;

public void onCreate(Bundle savedInstanceState) {
    ...
    videoFragment = new VideoFragment();
    ...
}

private void showVideoFragment() {
    if (!videoFragment.isAdded()) {
        FragmentTransaction transaction = getFragmentManager().beginTransaction();
        transaction.replace(R.id.fragment_container, videoFragment, "video").commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

我无法在调试器中一致地重现此问题,但我的运行时错误报告继续报告java.lang.IllegalStateException: Fragment already added: VideoFragment用户的异常,堆栈跟踪由Android类组成.

/FragmentManager.java:1133? android.app.FragmentManagerImpl.addFragment
/BackStackRecord.java:648? android.app.BackStackRecord.run
/FragmentManager.java:1453? android.app.FragmentManagerImpl.execPendingActions
/FragmentManager.java:443? android.app.FragmentManagerImpl$1.run
/Handler.java:733? android.os.Handler.handleCallback
/Handler.java:95? android.os.Handler.dispatchMessage
/Looper.java:146? android.os.Looper.loop
/ActivityThread.java:5487? android.app.ActivityThread.main
/Method.java:-2? java.lang.reflect.Method.invokeNative
/Method.java:515? java.lang.reflect.Method.invoke
/ZygoteInit.java:1283? com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
/ZygoteInit.java:1099? com.android.internal.os.ZygoteInit.main
/NativeStart.java:-2? dalvik.system.NativeStart.main
Run Code Online (Sandbox Code Playgroud)

添加的定义是否与isAdded()用于检查片段事务的定义不匹配?

或者在某种程度上,活动中的videoFragment引用是不一样的?保存状态http://developer.android.com/guide/components/activities.html#SavingActivityState时,我需要明确处理这个问题吗?

或者是否有可靠的替代方法来检查片段是否已被添加?


UPDATE …

java android android-fragments

6
推荐指数
2
解决办法
8904
查看次数