0

我在 tabactivity und grouptactivty 中的后退按钮有问题。我有 4 个选项卡,在一个选项卡中我还有更多 3 个活动。当我打电话给活动时,它没有问题。但如果我点击后退按钮,我的应用程序关闭完成。

这是我的代码。我的错在哪里。

选项卡活动

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

}}

苏辰Activity.java

public class SuchenActivity extends Activity {

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

}}

谢谢

4

4 回答 4

0

当你点击返回按钮时你会期待什么?默认操作是转到上一个活动。你有 TabActivity 作为主要 - 所以你从你的 TabActivity 退出。如果您想以某种方式更改默认操作,只需onBackPressed在 TabActivity 中覆盖。但要小心——更改默认操作通常不利于用户体验。

于 2011-12-15T19:02:37.780 回答
0

是的,您需要手动处理后退按键事件。此处描述了此技术:

http://united-coders.com/nico-heid/use-android-activitygroup-within-tabhost-to-show-different-activity

于 2011-12-15T18:56:54.870 回答
0

在你的 TabActivity 中试试这个..

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

    // super.onBackPressed();

}
于 2012-11-01T15:16:38.123 回答
0

我发现无法覆盖 TabActivity 中的后退按钮操作。你应该在主办的活动中这样做

@Override

         public void onBackPressed() {

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

         }

在本例中,按下 Back 按钮将使您的应用程序返回。默认行为将关闭它。

注意:您应该放回 TabActivity,而不是托管活动。

于 2015-11-16T12:13:53.523 回答