2013-04-15 6 views
1

У меня странная проблема.При нажатии клавиши «Назад» активность не возвращается

При нажатии на заднюю клавишу активность не возвращается. в LogCat он показывает

04-15 19:24:09.063: V/Activity(23041): Tracking Key Up, activity is resumed: false 

вот мой код активности

package com.sandy.letsfixthat; 

import android.app.Activity; 
import android.app.LocalActivityManager; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.widget.TabHost; 
import android.widget.TabHost.TabSpec; 


public class Slider extends Activity { 
    TabSpec beginer,inter,dev; 

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

     setContentView(R.layout.slider); 
     TabHost th = (TabHost)findViewById(R.id.tabhost); 

     LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false); 

     // state will be bundle your activity state which you 
     // get in onCreate 
     mLocalActivityManager.dispatchCreate(savedInstanceState); 
     th.setup(mLocalActivityManager); 
     //tab for beginner 
     beginer = th.newTabSpec("Begin"); 
     beginer.setIndicator("Beginner"); 
     Intent begin = new Intent(this, Beginner.class); 
     beginer.setContent(begin); 
     th.addTab(beginer); 

     //tab for intermediate 
     inter = th.newTabSpec("Inter"); 
     inter.setIndicator("Intermediate"); 
     Intent Intermediate = new Intent(this, Intermediate.class); 
     inter.setContent(Intermediate); 
     th.addTab(inter); 

     //tab for developers 
     dev = th.newTabSpec("Devel"); 
     dev.setIndicator("Other"); 
     Intent develop = new Intent(this, Developer.class); 
     dev.setContent(develop); 
     th.addTab(dev); 
    } 

    public boolean onCreateOptionsMenu(android.view.Menu menu) { 
     // TODO Auto-generated method stub 
     super.onCreateOptionsMenu(menu); 
     MenuInflater blowUp = getMenuInflater(); 
     blowUp.inflate(R.menu.menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
     switch (item.getItemId()){ 
     case R.id.aboutUs: 
      Intent i = new Intent(this,About.class); 
      startActivity(i); 
      break; 

     case R.id.exit: 
      finish(); 
      break; 

    /* case R.id.setting: 
      Intent setting = new Intent (this,Settings.class); 
      startActivity(setting); 
      break;       */ 
     } 
     return false; 
    } 

    @Override 
    public void onPause() { 
     // your code. 
     super.onPause(); 
     finish(); 
    } 
} 

код MainActivity

package com.sandy.letsfixthat; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity implements OnClickListener { 
    Button go; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     go = (Button)findViewById(R.id.bgo); 
     go.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     switch (arg0.getId()){ 
     case R.id.bgo: 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setMessage("NOTE:- this is an initial release. MORE TUTORIAL COMING IN NEXT UPDATE") 
        .setCancelable(false) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // do things 
        Intent i = new Intent(MainActivity.this,Slider.class); 
        startActivity(i); 
       } 
      }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 
      break; 
     } 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     finish(); 
    } 
} 

Когда я открываю этот ползунок активности и нажмите кнопку назад, ничего не происходит , Что нужно сделать при нажатии на кнопку «Назад», нажмите «ВЫХОД».

+1

Почему вы назовете finish() в своем onPause()? – Analizer

+0

, чтобы приостановить действие, когда я перешел к другому действию – sandygautam

+1

, это не остановит его, это закончится. Например, если ваше приложение помещено в фоновом режиме, возврата не будет, поскольку оно будет уничтожено. – Analizer

ответ

0

Вы можете изменить заднюю функцию кнопки с:

public void onBackPressed(){ 
    finish(); 
} 

так он закончит свое приложение. Просто имейте в виду, что это не лучшее решение, и вы не должны использовать finish() в методе on pause.

+0

i Пробовал это .. но это тоже не работает :( – sandygautam

+1

Стандартное поведение чтобы завершить операцию, когда нажата кнопка «Назад». Вам не нужно переопределять этот метод, чтобы получить t это стандартное поведение. Это решение не полезно. –

+0

, но что делать, чтобы вернуть кнопку? – sandygautam

1

просто добавьте эту линию:

mLocalActivityManager.dispatchResume(); 

работал для меня!

+0

Возможно, было бы полезно, если бы вы могли предоставить более деривативный ответ (например, объясните, почему предлагаемое исправление устраняет проблему). – sandrstar

+1

Я действительно не знаю, как это решает проблему, но при работе с этой проблемой я нахожу это «dispatchResume() - вызывается активностью контейнера в onResume(), так что LocalActivityManager может выполнять соответствующее действие по действиям, которые он проводит «. поэтому, возможно, LocalActivityManager должен вызвать это для «Управлять» деятельностью. Надеюсь, это полезно. –

0

Как правило, вам не нужно ничего делать для кнопки «Назад», чтобы прекратить действие. Что вам нужно сделать, это не override onBackButtonPressed() или onKeyDown(). Или если вы переопределяете onKeyDown(), то ничего не делайте для keycode KEYCODE_BACK, кроме возврата false.

Обратите внимание, что это только прекращает деятельность , а не приложение. Если вы хотите выйти из всего приложения, то это немного сложнее. Сообщите нам, если это то, что вы хотели сделать, и я расширю этот ответ.

Смежные вопросы