我在tabactivity和grouptactivty中有后退按钮的问题。 我有4个标签,在一个标签中我也有3个以上的活动。当我打电话给一个活动时,它没有问题。但是如果我点击后退按钮,那么我的应用程序就会关闭。
这是我的代码。我的faullt在哪里。
Tabactivity
public class TabbarActivity extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabbar);
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
Resources res = getResources();
intent = new Intent().setClass(this, HauptmenuActivity.class);
spec = tabHost.newTabSpec("ReweHaupt")
.setIndicator("ReweHaupt",
res.getDrawable(R.drawable.home))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, ContactGroupEinkaufliste.class);
spec = tabHost
.newTabSpec("EinkaufListe")
.setIndicator("EinkaufListe",
res.getDrawable(R.drawable.einkaufliste))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, FilialesuchenActivity.class);
spec = tabHost
.newTabSpec("Filiarsuchen")
.setIndicator("Filiarsuchen",
res.getDrawable(R.drawable.searchbuton))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, NotizblockActivity.class);
spec = tabHost
.newTabSpec("Einkaufzettel")
.setIndicator("Einkaufzettel",
res.getDrawable(R.drawable.einkaufliste))
.setContent(intent);
tabHost.addTab(spec);
}
ContactGroupEinkaufliste.java
public class ContactGroupEinkaufliste extends ActivityGroup {
public static ContactGroupEinkaufliste groupContact;
private ArrayList<View> history;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.history = new ArrayList<View>();
groupContact = this;
View view = getLocalActivityManager().startActivity(
"idHoraireActivity",
new Intent(this, EinkauflisteActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
replaceView(view);
}
public void replaceView(View v) {
history.add(v);
setContentView(v);
}
public void back() {
if(history.size() > 0) {
history.remove(history.size()-1);
setContentView(history.get(history.size()-1));
}else {
finish();
}
}
// @Override
public void onBackPressed() {
ContactGroupEinkaufliste.groupContact.back();
return;
}}
EinkauflisteActivity.java
public class EinkauflisteActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.einkaufliste);
Button btnsenden = (Button) findViewById(R.id.btnsenden);
Button btnscaner = (Button) findViewById(R.id.btnscaner);
Button btnsuchen = (Button) findViewById(R.id.btnsuchen);
// wenn wir button clicken, rufen wir neu activity
btnsuchen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
View view = ContactGroupEinkaufliste.groupContact
.getLocalActivityManager()
.startActivity(
"suchenactivity",
new Intent(v.getContext(), SuchenActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
ContactGroupEinkaufliste.groupContact.replaceView(view);
}
});
}}
SuchenActivity.java
public class SuchenActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.suchen);
}}
谢谢
答案 0 :(得分:0)
是的,您需要手动处理后退按键事件。这里描述了这种技术:
答案 1 :(得分:0)
点击后退按钮时你会有什么期望?默认操作将转到上一个活动。您将TabActivity作为主要内容 - 因此您退出TabActivity。如果您想以某种方式更改默认操作,请在TabActivity中覆盖onBackPressed
。但要小心 - 改变默认操作通常不利于用户体验。
答案 2 :(得分:0)
在TabActivity中试试这个..
@Override
public void onBackPressed()
{
// TODO Auto-generated method stub
Activity act = getCurrentActivity();
act.onBackPressed();
// super.onBackPressed();
}
答案 3 :(得分:0)
我发现在TabActivity中覆盖Back按钮操作是不可能的。 您应该在托管活动中执行此操作
@Override
public void onBackPressed() {
Log.i("Kishu","[onBackPressed()] pressed");
getParent().moveTaskToBack(true);
return;
}
在此示例中,按“返回”按钮将使您的应用程序返回。默认行为将关闭它。
注意:您应该放回TabActivity,而不是托管活动。