0

tabactivity と 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でこれを試してください。

@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;

         }

この例では、[戻る] ボタンを押すと、アプリが元に戻ります。デフォルトの動作はそれを閉じます。

注: ホストされたアクティビティではなく、TabActivity を元に戻す必要があります。

于 2015-11-16T12:13:53.523 に答える
0

はい、戻るキー押下イベントを手動で処理する必要があります。この手法については、次で説明します。

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

于 2011-12-15T18:56:54.870 に答える
0

そして、戻るボタンをクリックするとき、あなたは何を期待しますか? デフォルトのアクションは、前のアクティビティに移動します。メインとして TabActivity があるため、TabActivity を終了します。何らかの方法でデフォルトのアクションを変更したい場合onBackPressedは、TabActivity でオーバーライドするだけです。ただし、注意してください。通常、既定のアクションを変更すると、ユーザー エクスペリエンスが低下します。

于 2011-12-15T19:02:37.780 に答える