【问题标题】:android:when run onLoadFinished in orientation changeandroid:当在方向改变时运行 onLoadFinished
【发布时间】:2014-05-24 04:58:53
【问题描述】:

我在我的应用程序中使用 AsyncLoader。 我想知道 onLoadFinished 在方向改变期间我的片段在哪个方法之后运行?

加载程序第一次运行时会显示一个对话框

@Override
    public Loader<ArrayList<HashMap<String, Object>>> onCreateLoader(int id,Bundle bundle)
    {
        handler.sendEmptyMessage(SendRequestLoader.ShowDialog);
        return loader;
    }

我将 listarray 添加到我的适配器

@Override
    public void onLoadFinished(Loader<ArrayList<HashMap<String,Object>>> loader,ArrayList<HashMap<String,Object>> list)
    {
        Log.e("", "---onLoadFinished---");
        if(list!=null)
        Log.e("before","-------adapter.size()----"+adapter.getCount());
        if(list!=null)
        {
         int count=list.size();
         for(int i=0;i<count;i++)
         {
            adapter.add(list.get(i));   
         }
        }
        handler.sendEmptyMessage(((SendRequestLoader)loader).getMessage());
        if(list!=null)
        Log.e("","-------list.size()----"+list.size());
        Log.e("after","-------adapter.size()----"+adapter.getCount());
    }

    @Override
    public void onLoaderReset(Loader<ArrayList<HashMap<String, Object>>> loader) 
    {
    } 

我保存对话框状态以在方向更改中显示对话框。但我不确定 onLoadFinished 方法是否可以在 onSaveInstanceState 方法之后运行,我是否使用正确的方法来管理我的加载程序?

@Override
public void onSaveInstanceState(Bundle outState)
{
    super.onSaveInstanceState(outState);
    if(isshowingDialog)
        outState.putBoolean("isshow",true);
    else
        outState.putBoolean("isshow",false);
    outState.putParcelable("parcle", new Parcable(adapter.getArrayList()));
}

【问题讨论】:

  • 你能提供更多细节吗?看了你的帖子很多次了,不明白你的疑惑。
  • 我想在数据加载前后显示和关闭对话框。但我不知道我是否在 onLoadFinished 运行时改变方向。它可以在 onSaveInstanceState 之后运行还是不运行
  • -1 因为放弃了这个问题!

标签: android asynctaskloader


【解决方案1】:

根据您的评论: android:when run onLoadFinished in orientation change

为了在屏幕改变方向时不丢失对话框状态,你应该做一些工作。

首先在AndroidManifest.xml 中设置Activity 的配置更改:

<activity
    android:name="my.app.pkg.MyActivity"
    android:configChanges="orientation|screenSize" >
</activity>

之后,您将覆盖 Activity 类中的 onConfigurationChanged 方法,以便在发生这种情况时不处理任何事情:

@Override
public void onConfigurationChanged( final Configuration newConfig ) {
    super.onConfigurationChanged( newConfig );
}

在这里,当用户旋转设备和方向更改时,您的Activity 不会重新启动,您也不会失去异步人员。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多