在此应用程序中,仅在计算/执行onClick操作后,您将获得另一个按钮以将用户带入另一个活动。
假设我有两个活动,Activity_A和Activity_B。在Activity_A中放置查询后,我可以选择转到Activity_B。在Activity_B中,我正在使用Android的导航功能,我在回到Activity_A时遇到问题。在我转到Activity_B之前放置在Activity_A中的查询未显示,而是将Activity_A作为新活动启动。
我使用的代码是:
这里引用Activity_B我正在使用onClick监听器:
view_directions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,DirectionsView.class);
Bundle extras = new Bundle();
extras.putString("LOCATION", location.getText().toString());
extras.putString("DESTINATION", destination.getText().toString());
intent.putExtras(extras);
intent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
startActivity(intent);
}
});
我也试过删除addFlags
这个东西。
在Activity_B中
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId())
{
case android.R.id.home:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}
我也尝试在这里使用addFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP)
,但我找不到的结果。
简单地说,当我从Activity_B引用Activity_A时,Activity_A应保留之前生成的查询。
应用程序的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.calculator_taxi_fare"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/Theme.Sherlock.Light">
<activity
android:name="com.example.calculator_taxi_fare.MainActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.calculator_taxi_fare.functions.Preferences"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation" >
<intent-filter>
<action android:name="android.intent.action.PREF" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".DirectionsView"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation" >
<intent-filter>
<action android:name="com.example.calculator_taxi_fare.DIRECTIONS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:2)
你可以试试这个:
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case android.R.id.home:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
这将返回activity_A,新的activity_A将不会启动,但您将返回旧的。
答案 1 :(得分:1)
有更简单的解决方案 在清单文件中 在活动定义中设置noHistory = true
<activity
android:name="com.bla.bla.A_Activity"
android:label="@string/app_name"
**android:noHistory="true"**
android:theme="@style/AppThemeNoTitleBar" >
</activity>
这将自动删除A_Activity From活动堆栈