【发布时间】:2014-12-04 05:01:10
【问题描述】:
我正在制作一个简单的 Android 应用程序,只是为了熟悉这个概念。我有一个包含两个活动的应用程序,第一个应该只是显示一秒钟的启动屏幕,第二个是带有黑色方块的画布,当您单击它时会变成青色。当我运行它时,它会停止并在日志中显示“执行停止未恢复的活动”的错误。
主要活动:
package com.example.test;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
Thread.sleep(1000);
}catch(Exception e){}
Intent in = new Intent(this, Afspl.class);
startActivity(in);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
下一个活动:
package com.example.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
public class Afspl extends Activity {
public DrawView vi;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
vi = new DrawView(this);
}
class DrawView extends View{
Paint paint = new Paint();
public DrawView(Context context){
super(context);
}
public void onDraw(Canvas c){
paint.setColor(col);
c.drawRect(40, 40, 200, 200, paint);
}
private int col = Color.BLACK;
public void setToColor(int c){
col=c;
}
}
public boolean onTouchEvent(MotionEvent me){
if(me.getX()>=30 && me.getX() <= 320 && me.getY() >=30 && me.getY() <= 320)vi.setToColor(Color.CYAN);
return super.onTouchEvent(me);
}
}
你知道我为什么会收到这个错误,或者它意味着什么,或者我该如何解决这个问题?感谢所有帮助。
【问题讨论】:
-
您的线程在尝试停止时处于睡眠状态(因为您在等待时调用了 startActivity)。您正试图阻止它,但它当前未处于恢复状态。
-
如果我使用 Handler 将 run 函数放入可运行类中,我如何引用 Handler 所在的 MainActivity 类,因为 'this' 将引用可运行类?
-
如果您正在学习,请转换您的方法,不要做启动画面。他们是反安卓的,用户讨厌他们。您希望在网页上看到启动画面吗?当你点击一个网页时会发生什么,他们会向你展示你必须通过的广告对话框,然后才能使用该页面?是不是很烂?
-
我想确保我了解如何在活动之间切换,对于我正在制作的应用程序,这似乎是个好主意。
标签: java android android-activity