2011-12-15 2 views
0

У меня проблема с кнопкой возврата в tabactivity und grouptactivty. У меня есть 4 вкладки, на вкладке у меня есть еще 3 действия. когда я называю деятельность, это без проблем. но если я нажимаю кнопку «Назад», то мое приложение закрывается.TabActivity GroupActivity Back button dont work

Вот мой код. Где мой скот.

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

}} 

Thanks

ответ

0

А что вы ожидаете при нажатии кнопки назад? Действие по умолчанию - переход к предыдущему действию. У вас есть TabActivity как основной - поэтому вы выходите из TabActivity. Если вы хотите изменить как-то действие по умолчанию, просто переопределите onBackPressed в TabActivity. Но будьте осторожны с этим - изменение действий по умолчанию обычно не подходит для пользователей.

+0

Вы имеете в виду? Могу ли я писать в tabbaractivity onbackpressed? – Lucky

0

попробовать это в вашем TabActivity ..

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

    // super.onBackPressed(); 

} 
0

Я обнаружил, что это невозможно отменить обратное действие кнопки в TabActivity. Вы должны сделать это в проводимых мероприятиях

@Override 

     public void onBackPressed() { 

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

     } 

В этом примере, нажав кнопку Назад поместит ваше приложение к спине. Поведение по умолчанию закроет его.

Примечание: вы должны вернуть вам TabActivity, а не хостингу.