我希望有人可以帮我解决问题。 Android后退按钮适用于某些活动,而其他活动则会中断。我的MainActivity还有其他目标活动,具体取决于所选的选项。当我的应用程序管理地图时,当我单击标记的Infowindow时,它会根据需要转到详细活动,当我单击Android后退按钮时,它会正常返回主要活动(不要与操作栏中的主页按钮,我不想实现)。
但是当我点击“联系人”或“条款和条件”选项时,我打算以与infowindows相同的方式启动联系人/条款活动,它会像往常一样打开活动,但后面按钮不起作用,它看起来有点重新打开联系人/条款活动,不会返回主要活动。我搜索了很多帖子,并添加了我的观察结果:
我的选项用完了,我无法弄清楚出了什么问题,我知道我不应该自己实现后退按钮功能,因为Android会为我处理它。 我正在我的清单中定位SDK版本16及更高版本,我添加了一个调用这两个活动的代码的简短版本:
public class MainActivity extends FragmentActivity implements OnNavigationListener, ClusterManager.OnClusterClickListener<MyItem>, ClusterManager.OnClusterInfoWindowClickListener<MyItem>, ClusterManager.OnClusterItemClickListener<MyItem>, ClusterManager.OnClusterItemInfoWindowClickListener<MyItem>
{
.
.
.
/*Some variables initialized*/
.
.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
.
.
.
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
menuOpt=position;
getData();
//gridView.setVisibility(View.GONE);
if(gridView.getVisibility() == View.VISIBLE) {
toggleView(gridView);
}
}
});
}
public void getData(){
String optString="";
llMatVesp.setVisibility(View.GONE);
switch(menuOpt){
/* In this case the back button to MainActivity works, I manage action bar operations for a particular behaviour of the menu, all options in the switch do */
case 1:
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setCustomView(null);
getResults();
break;
/* In this case the back button of Contact Activity, that's supposed to return to MainActivity doesn't work */
case 2:
Intent conIntent=new Intent(MainActivity.this, Contact.class); startActivity(conIntent);
break;
default:break;
}
}
/*this function brings data from db, add markers to the map, and animates to a certain point
public void getResults(){
.
.
}
/* This functions extract the right data from the marker and make the intent that starts the detail Activity, where the back button works with no problems */
@Override
public void onClusterItemInfoWindowClick(MyItem item) {
showDetail(item.getId(),item.getMenuOpt());
}
public void showDetail(String id, int menuOpt){
Intent showDetail=new Intent(MainActivity.this, ShowDetail.class);
showDetail.putExtra("menuOpt", menuOpt);
showDetail.putExtra("icon", ic);
showDetail.putExtra("id", id);
startActivity(showDetail);
}
}
联系活动有一个表单并发送电子邮件,但是后退按钮不起作用的另一个活动,TermsAndConditions活动,只显示一个简单的LinearLayout,就是这样,没有花哨的编码。
答案 0 :(得分:0)
我找到了一个解决方法,您只需要覆盖后退按钮默认操作,将用户发送到主要活动或您希望的任何其他操作,但如果您来自其他活动,则会丢失活动后退堆栈顺序。如果您的第二个活动使用webview,如果页面加载有错误,它将使用chrome引擎,在这种情况下,将这些标志添加到intent中,否则忽略该行。
@Override
public void onBackPressed() {
Intent intent = new Intent(SecondActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
return;
}