【问题标题】:Unpredictable behavior onStart() onPause() and onResume()不可预测的行为 onStart() onPause() 和 onResume()
【发布时间】:2011-08-31 15:00:53
【问题描述】:

我在 onStart、onPause 和 onResume 的 super 上设置了多个断点 活动。我想处理被按下的后退按钮,而不是回到主要活动,我试图让我的程序转到后退按钮之前的最后一个活动。

在调试模式下玩耍并遵循这三个函数调用时,我发现它们是不可预测的。当一个选择要进入另一个活动时,我所在的活动我的onresume()称为我认为onpause()将被调用,并且在onresume()之后,调用onstop()。

我在这里做错了什么?

  <application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
>
    <activity android:name=".SplashScreen"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" android:configChanges="keyboardHidden|orientation"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActivity"
    android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".CountrySelection"  android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".StateSelection"  android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".CitySelection"  android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".CategorySelection"  android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".SubCategorySelection"  android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".DisplayAdsActivity"  android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".DisplayAdActivity"  android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>
    <activity android:name=".SavedAdsActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"/>

</application>

    case R.id.locationbutton:{

            Intent i = new Intent();
            i.putExtra("Locations",continents);
            i.setClass(this,CountrySelection.class);
            startActivityForResult(i,LOCATION_REQUEST_CODE);
            break;

        }

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    //super.onListItemClick(l, v, position, id);
    Intent i = new Intent();
    location = position;
    i.putExtra("States",continents.get(position).getStates());
    i.setClass(this, StateSelection.class);
    startActivityForResult(i,0);


}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    //super.onListItemClick(l, v, position, id);
    Intent i = new Intent();
    i.putExtra("Cities",states.get(position).getCounties());
    i.setClass(this, CitySelection.class);
    startActivityForResult(i,0);

}

【问题讨论】:

  • “返回按钮之前的最后一个活动”是什么意思?
  • @njzk2 我有一个活动,我用 startActivityForResult(intent) 从我的主要活动中调用。从下一个活动开始,还有 3 个活动开始,并说用户在第二次做了选择选择不喜欢并想从第三次回到第二次,现在我的程序马上回到主要活动。我希望用户能够在点击后退按钮后返回到第二个活动
  • 您的问题是您的活动没有正确进入活动堆栈。您可以粘贴清单(您声明活动的部分)吗?
  • taht 很奇怪。当您从另一个活动开始时,新活动将被放入活动堆栈中,直到按下返回(或直到其他一些行为与所述堆栈相适应)。您不是在修改活动堆栈吗?
  • @njzk2 我没有修改我知道的活动堆栈。我正在从 MainActivity 调用 startActivityForResult() ,然后调用后续活动以实现最终结果。我在这些活动中没有做任何花哨的事情。我只是加载带有内容的列表视图并使用 onItemClickListener 返回选择。

标签: android


【解决方案1】:

您是否看过this,它描述了如何在您的 Intent 上设置标志以定义它们应该(或不应该)如何进入堆栈?

默认情况下,当您调用一连串活动时,应在按下返回键时显示最后一个活动。您能否发布一些代码向我们展示您如何调用其他活动?

【讨论】:

    【解决方案2】:

    基本上,在您的onActivityResult中,您必须检查实际结果。

    if (resultCode == RESULT_CANCELED) {
        // The user pressed back, don't do anything
    } else {
        // the user did not pressed back, you can finish:
        setResult(RESULT_OK);
        finish();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多