代码有什么问题?我无法找到任何错误,并且启动屏幕无法获得处置,因此无法实现意图。我为这个启动画面尝试了不同的代码,它没有任何问题。我只想知道为什么这段代码不起作用。
public class Splash extends Activity {
@Override
protected void onCreate(Bundle sScreen) {
super.onCreate(sScreen);
setContentView(R.layout.splash);
Thread timer = new Thread(){
public void Run(){
try{
sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}finally {
Intent intent = new Intent("com.projects.ziham.learning.STARTINGPOINT");
startActivity(intent);
}
}
};
timer.start();
}
}
并且我更改了意图参数,这也是不工作的例子:
Intent intent = new Intent(Splash.this,StartingPoint.class);
答案 0 :(得分:2)
试试这个:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(Splash.this, StartingPoint.class));
}
}, 1000);
答案 1 :(得分:0)
请在延迟一段时间后尝试以下方法重定向
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(SplashScreen.this, yourActivity.class);
startActivity(i);
finish();
}
}, 1000);
请试试这个
Thread t=new Thread(new Runnable() {
@Override
public void run() {
System.out.println("run called");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
System.out.println("finally called");
}
}
});
t.start();
答案 2 :(得分:0)
而不是Timer
,您可以使用Handler
。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(Splash.this, StartingPoint.class);
startActivity(intent);
}
}, 3000);
答案 3 :(得分:0)
答案 4 :(得分:0)
您必须使用postDelayed
中的Handler
方法,或者您需要在UIThread中运行startActivity
:
runOnUIThread(new Runnable(){
Intent intent = new Intent("com.projects.ziham.learning.STARTINGPOINT");
startActivity(intent);
});
答案 5 :(得分:0)
将Run替换为代码中的run并使用Handler。
Thread timer = new Thread(new Runnable() {
@Override
public void run() {
try{
Thread.sleep(1000);
}catch(InterruptedException e) {
e.printStackTrace();
} finally {
Intent intent = new Intent(MainActivity.this,SecondPage.class);
startActivity(intent);
}
}
});
timer.start();