【问题标题】:AsyncTask starts again on tab change with SherlockFragmentsAsyncTask 在使用 SherlockFragments 更改选项卡时再次启动
【发布时间】:2013-08-10 16:26:31
【问题描述】:

我有扩展 SherlockFragmentActivity 的 MainActivity 和两个带有 SherlockFragment 的选项卡。这两个选项卡具有由 AsyncTask 填充的 ListView。一切正常,但每当我从选项卡切换到选项卡时,AsyncTask 会再次触发,我只想启动一次。

这是我的 MainActivity:

public class MainActivity extends SherlockFragmentActivity {

    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent);
        mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"),Tab1.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Tab2"),Tab2.class, null);

}

这里是 Tab1:

public class Tab1 extends SherlockFragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.tab1, container, false);
        return v;

    }

    @Override
    public void onStart() {
        super.onStart();
        // TODO Auto-generated method stub

            new FetchData().execute();

    }

    public class FetchData extends AsyncTask<String, String, String> {
    .....
    }

}

Tab2 包含类似的代码,只是使用了不同的 mysql select。一切正常,数据填充在 ListView 上,但每次我从 tab1 切换到 tab2 时,AsyncTask 都会再次触发:/ 请帮助...

【问题讨论】:

    标签: android android-asynctask fragment android-tabhost


    【解决方案1】:

    每次片段可见时都会调用 onStart 方法,例如当你切换标签时

    来源:Android fragment life cycle

    我建议你搬家:

    new FetchData().execute();
    

    进入 onCreateView 方法。

    【讨论】:

    • 我试过了,AsyncTask 不会触发,但是当我返回该选项卡时它会出现黑屏。
    【解决方案2】:

    我通过下载所有数据并存储在本地 sqlite 中解决了这个问题。这样,每个片段中就不需要 AsyncTask 了。

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多