Android TabActivity GroupActivity后退按钮不工作

Android TabActivity GroupActivity后退按钮不工作,android,tabactivity,android-tabactivity,Android,Tabactivity,Android Tabactivity,tabactivity和grouptactivty中的后退按钮有问题。 我有4个标签,在一个标签里我还有3个活动。当我调用一个活动时,它是没有问题的。但如果我点击后退按钮,我的应用程序就会完全关闭 这是我的密码。我的水龙头在哪里 Tabactivity public class TabbarActivity extends TabActivity { /** Called when the activity is first created. */ @Override public void

tabactivity和grouptactivty中的后退按钮有问题。 我有4个标签,在一个标签里我还有3个活动。当我调用一个活动时,它是没有问题的。但如果我点击后退按钮,我的应用程序就会完全关闭

这是我的密码。我的水龙头在哪里

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;
}}
SuchenActivity.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);
        }
    });

}}
public class SuchenActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.suchen);

}}

谢谢

是的,您需要手动处理back按键事件。这里描述了这种技术:


当点击“后退”按钮时,您希望看到什么?默认操作是转到上一个活动。您将TabActivity作为主-因此退出TabActivity。如果您想更改默认操作,只需覆盖TabActivity中的onBackPressed。但是要小心-更改默认操作通常不利于用户体验。

在您的活动中尝试此操作

@Override
public void onBackPressed()
{
    // TODO Auto-generated method stub
    Activity act = getCurrentActivity();
    act.onBackPressed();

    // super.onBackPressed();

}

我发现在TabActivity中不可能覆盖后退按钮操作。 您应该在托管活动中执行此操作

@Override

         public void onBackPressed() {

             Log.i("Kishu","[onBackPressed()] pressed");
             getParent().moveTaskToBack(true); 
             return;

         }
在本例中,按“后退”按钮将使您的应用程序后退。默认行为将关闭它


注意:您应该放回选项卡activity,而不是hosted activity。

抱歉,我没有找到。这到底在哪里?你是说?我可以用tabbaractivity在Backpressed上写吗?