【问题标题】:GridView stops interacting after screen orientation changesGridView 在屏幕方向更改后停止交互
【发布时间】:2012-07-13 19:41:23
【问题描述】:

我有两个选项卡的活动,它实现了两个类似的片段,每个片段由 GridView 组成,通过 AsyncTask 加载项目,它可以正常工作,直到屏幕方向改变.. . 之后,它只能单击操作栏并在选项卡之间切换,但 GridViews 完全停止与用户交互:滚动、单击或其他任何操作。只实现了标准的 onSaveInstanceState(Bundle outState)onRestoreInstanceState(Bundle savedInstanceState)

我不知道这个问题,需要帮助。

UPD:嗯,每次新的方向改变后,都会出现一个新的片段实例。

UPD2:删除不需要的代码。

【问题讨论】:

  • 您是否检查了here 以了解方向更改会发生什么?

标签: android gridview android-fragments fragment


【解决方案1】:

您的活动将在方向更改时重新创建。

尝试将 android:configChanges="keyboardHidden|orientation" 添加到清单中的设置中。这将阻止您的活动被重新创建。

【讨论】:

  • 没有帮助。 Activity 重新创建甚至显示网格列表的顶部,但仅此而已。
【解决方案2】:

解决了问题!

问题出在 Activity.onCreate 和选项卡创建机制上。

每次在状态改变后重新创建活动 onCreate 都会添加一个新选项卡,所以

    if(savedInstanceState == null){

检查解决问题。这是完整的、正常工作的 OnCreate 方法:

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

    final ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionBar.setDisplayShowTitleEnabled(false);
    if(savedInstanceState == null){
        Tab tab = actionBar.newTab()
                .setText("TabLabel")
                .setTabListener(new TabListener<FileFragment>(
                        this, "TabTag", FileFragment.class));
        actionBar.addTab(tab);
    }
    Log.d("Activity.OnCreate", "Creating Activity");

}

【讨论】:

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