2012-06-04 6 views
1

Рассмотрите, что я использую пять экранных страниц для проекта «A». Каждая страница переключается между другими страницами последовательно один за другим, мне нужно закрыть все страницы, когда я нажимаю кнопку «выйти» со страницы 5, которая является последней.Множественное переключение страниц в android eclipse

Я использовал этот ниже код, но проблема только в том, что последняя страница приближается, другие нет.

найти свой код ниже

Button extbtn = (Button)findViewById(R.id.but_Exit); 
extbtn.setOnClickListener(new View.OnClickListener() { 

public void onClick(View v) { 
Intent intent = new Intent(); 
    setResult(RESULT_OK, intent); 
    finish(); 
} }); 

Спасибо за ваше время!

+0

привет @andro prabu, почему вы используете setResult (RESULT_OK, намерение); ??? если у вас нет специальной работы в вашем примере проекта, используйте «StartActivity (намерение); finish();» после каждого успешного перенаправления страниц. то вы не получите эту проблему в простой функции. – itsrajesh4uguys

ответ

1

Сделать все пять действий расширением BaseActivity, которое регистрирует BroadcastReceiver на onCreate (и отменяет регистрацию при onDestroy). Когда extbtn щелкают, посылает широковещательный все то BaseActivities закрыть себя

, например, в вашем BaseActivity оный:

public static final String ACTION_KILL_COMMAND = "ACTION_KILL_COMMAND"; 
public static final String ACTION_KILL_DATATYPE = "content://ACTION_KILL_DATATYPE"; 

private KillReceiver mKillReceiver; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 
    ... 
    mKillReceiver = new KillReceiver(); 
    registerReceiver(mKillReceiver, IntentFilter.create(ACTION_KILL_COMMAND, ACTION_KILL_DATATYPE));   
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    unregisterReceiver(mKillReceiver); 
} 

private final class KillReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     finish(); 
    } 
} 

и на OnClick вызове extbtn в:

extbtn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     // send a broadcast that will finish activities at the bottom of the stack 
     Intent killIntent = new Intent(BaseActivity.ACTION_KILL_COMMAND); 
     killIntent.setType(BaseActivity.ACTION_KILL_DATATYPE); 
     sendBroadcast(killIntent); 

     Intent intent = new Intent(); 
     setResult(RESULT_OK, intent); 
     finish(); 
    } 
});  
+0

Есть ли упоминание о manifest.xml, если я следую вашему решению? –

+0

@androprabu nop, не нужно ничего писать в манифесте. – eladr