这是我的活动Mod_1_1_b。在启动时,此活动将用户带到3秒钟后转到Mod_1_1_c,Mod_1_1_b上有一个用于转到其他活动(主要)的按钮,但是每当我按下该按钮时,它都会先将我带到主要活动,然后立即启动Mod_1_1_c。我试过打电话给finish(); 但不起作用,该意图似乎已经在后台启动。
package com.example.abc;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
public class Mod_1_1_b extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mod_1_1_b);
final MediaPlayer mp1 = MediaPlayer
.create(getBaseContext(), R.raw.yolo); // -<
mp1.start();
Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
Intent startActivity = new Intent(Mod_1_1_b.this,
Mod_1_1_c.class);// -<
startActivity(startActivity);
overridePendingTransition(R.anim.slide_right_to_left_1,
R.anim.slide_right_to_left_2);
finish();
}
}, 3000L);
}
public void back(View view) {
Intent intent = new Intent(this, Mod_1_1AtoZ.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_left_to_right_1,
R.anim.slide_left_to_right_2);
finish();
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
}
}
XML文件
<RelativeLayout
android:layout_width="290dip"
android:layout_height="290dip"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/b_tile" >
</RelativeLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:onClick="back"
android:text="Back" />
</RelativeLayout>
it first takes me to main activity and then immediately launches Mod_1_1_c
那是因为您将处理程序设置为在3秒钟内执行,因此按下该按钮后,它将更改活动,但仍将执行您的处理程序并更改为活动 Mod_1_1_c
解决方案:
在您的按钮中,back
您需要取消处理程序以使其在更改活动后停止执行。
样本:
public void back(View view) {
timeoutHandler.removeCallbacks(your_runnable);
Intent intent = new Intent(this, Mod_1_1AtoZ.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_left_to_right_1,
R.anim.slide_left_to_right_2);
finish();
}
确保您的Runnable
和Handler
具有全局实例。
编辑:
public class Mod_1_1_b extends Activity {
Handler mHandler; //global instance
Runnable your_runnable; //global instance
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mod_1_1_b);
final MediaPlayer mp1 = MediaPlayer
.create(getBaseContext(), R.raw.yolo); // -<
mp1.start();
mHandler = new Handler();
your_runnable = new Runnable() {
@Override
public void run() {
Intent startActivity = new Intent(Mod_1_1_b.this,
Mod_1_1_c.class);// -<
startActivity(startActivity);
overridePendingTransition(R.anim.slide_right_to_left_1,
R.anim.slide_right_to_left_2);
finish();
}
};
mHandler.postDelayed(your_runnable , 3000L);
}
public void back(View view) {
mHandler.removeCallbacks(your_runnable);
Intent intent = new Intent(this, Mod_1_1AtoZ.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_left_to_right_1,
R.anim.slide_left_to_right_2);
finish();
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句