我想在用户按下主页按钮时终止一个 Activity。为此,我使用以下代码:
public void onPause() {
super.onPause();
this.finish();
}
它工作正常。但是,如果用户按下后退按钮而不是主页,它也会终止 Activity 。我希望后退按钮像往常一样执行,即它应该将用户带到上一个 Activity 。有什么想法吗?
下面是我的Activity类的代码:
public class HomeScreen extends Activity {
/** Called when the activity is first created. */
private Button btn_play;
private MediaPlayer mp = new MediaPlayer();
private static int AUDIO_NO = 1;
public static String isVideoSelected = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
btn_play = (Button)findViewById(R.id.btn_play);
btn_play.setOnClickListener(btn_listener);
if(isVideoSelected!="") isVideoSelected="";
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
play_audio(AUDIO_NO);
}
}, 1000);
} catch(Exception e) {
}
}
private void play_audio(int slno) {
try {
if(slno == 1) mp = MediaPlayer.create(getBaseContext(), R.raw.audio_1);
else if(slno == 2) mp = MediaPlayer.create(getBaseContext(), R.raw.audio_2);
mp.setLooping(false);
mp.setOnCompletionListener(audio_listener);
mp.start();
} catch(Exception e) {
// do nothing
}
}
private MediaPlayer.OnCompletionListener audio_listener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
try{
mp.release();
if(AUDIO_NO == 1) {
play_audio(2);
AUDIO_NO++;
}
} catch(Exception e) {
}
}
};
private View.OnClickListener btn_listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try{
if(mp.isPlaying()) {
mp.stop();
mp.release();
}
Intent intent = new Intent(getApplicationContext(), ScreenTwo.class);
startActivity(intent);
} catch(Exception e) {
} finally {
}
}
};
public void onUserLeaveHint() {
super.onUserLeaveHint();
try{
if(mp.isPlaying()) {
mp.stop();
mp.release();
}
btn_play = null;
} catch(Exception e) {
}
}
@Override
public void onDestroy() {
super.onDestroy();
try{
if(mp.isPlaying()) {
mp.stop();
mp.release();
}
btn_play = null;
} catch(Exception e) {
}
}
}
最佳答案
我认为您需要在这里提供更多关于您的动机的信息:为什么您想要终止您在 Home presses 上的 Activity 而不是让系统管理它?你想完成什么不是自己发生的?如果只是不想让用户将任务切换回特定 Activity ,请查看可用于 task stack 的各种标志。 .
编辑:在这种情况下,您可能会导致您的 catch-all 异常处理出现问题。尝试将这些行移动到 finally
子句中,而不是在 try
中,并让您的异常处理程序至少记录它捕获的异常 (Log.e("tag", "Exception caught; ignoring:", e)
).包罗万象通常是糟糕的编程习惯,特别是如果您至少没有记录异常以便您可以看到哪里出了问题。
Intent intent = new Intent(getApplicationContext(), ScreenTwo.class);
startActivity(intent);
关于android - 按下主页按钮时如何终止 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5220456/