下面这个程序是实现一个activity调用另一个activity,程序编译无错,运行时报错:The application ex12(process ex12)
has stop unexpectedly.Please try again
我后来把wipe user data选中,或者关了eclipse重开,依然是报这个错,其它程序是好的,所以也不是配置问题,帮忙找找错误吧,另外我想问下,这个android的错误提示怎么这么模糊,就一个stop unexpectedly,没有具体的错误提示吗?还是我没找到?程序如下:ex12.java
package com.misoo.ex12;import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;public class ex12 extends Activity {
private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
private LinearLayout layout;
private LinearLayout.LayoutParams para;
static final int RG_REQUEST = 0;
private int mColor = Color.YELLOW;

@Override 
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
para = new LinearLayout.LayoutParams(230, 140);
DrawView dv = new DrawView(this);
layout.addView(dv, para);
Button btn = new Button(this);
btn.setText("Change Color"); btn.setOnClickListener(listener);
para = new LinearLayout.LayoutParams(WC, WC);
layout.addView(btn, para);
setContentView(layout);
}

public int getColor() { 
return mColor; 
}

private OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
Intent in = new Intent(ex12.this, rgActivity.class);
startActivityForResult(in,RG_REQUEST);
}
};

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RG_REQUEST) {
if (resultCode == RESULT_CANCELED)
setTitle("Canceled...");
else if(resultCode == RESULT_OK) {
String data_str = (String)data.getCharSequenceExtra("DataKey");
setTitle(data_str);

if(data_str.contains("Y")) 
mColor = Color.YELLOW;
else 
mColor = Color.BLUE;
}
}
}
}DrawView.javapackage com.misoo.ex12;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;public class DrawView extends View {
private Paint pa;
private Context ctx;

public DrawView(Context context) {
super(context);
ctx = context; pa = new Paint(); 
}

@Override 
protected void onDraw(Canvas canvas) {
ex12 obj = (ex12)ctx;
pa.setColor(obj.getColor()); canvas.drawRect(10, 10, 100, 100, pa);
pa.setColor(Color.GREEN);
pa.setStrokeWidth(4);
pa.setStrokeCap(Paint.Cap.ROUND);
canvas.drawLine(10, 55, 100, 55, pa); canvas.drawLine(55, 10, 55, 100, pa);
pa.setColor(Color.RED);
canvas.drawRect(50, 50, 60, 60, pa);

}rgActivity.java
package com.misoo.ex12;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;public class rgActivity extends Activity implements OnCheckedChangeListener{
private final int WC = RadioGroup.LayoutParams.WRAP_CONTENT;
private RadioGroup rg_layout;
RadioGroup.LayoutParams params;

@Override 
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
rg_layout = new RadioGroup(this);
params = new RadioGroup.LayoutParams(WC, WC);
rg_layout.setOrientation(RadioGroup.VERTICAL);
rg_layout.setLayoutParams(params);
rg_layout.setOnCheckedChangeListener(this);

RadioButton button1 = new RadioButton(this);
button1.setText("Yellow"); 
button1.setId(1001);
params = new RadioGroup.LayoutParams(WC, WC);
rg_layout.addView(button1,params);
RadioButton button2 = new RadioButton(this);
button2.setText("Blue"); 
button2.setId(1002);
params = new RadioGroup.LayoutParams(WC, WC);
rg_layout.addView(button2,params);
setContentView(rg_layout);
}

public void onCheckedChanged(RadioGroup arg0, int arg1) {
String cc;
if(arg0.getCheckedRadioButtonId() == 1001) cc = "Y";
else cc = "B";
Bundle bundle = new Bundle();
bundle.putString("DataKey", cc);
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
}

解决方案 »

  1.   

    10-21 02:44:48.426: INFO/ActivityManager(568): Starting activity: Intent { comp={com.droiddraw/com.droiddraw.rgActivity} }
    10-21 02:44:48.455: DEBUG/AndroidRuntime(728): Shutting down VM
    10-21 02:44:48.481: WARN/dalvikvm(728): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
    10-21 02:44:48.481: ERROR/AndroidRuntime(728): Uncaught handler: thread main exiting due to uncaught exception
    10-21 02:44:48.597: ERROR/AndroidRuntime(728): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.droiddraw/com.droiddraw.rgActivity}; have you declared this activity in your AndroidManifest.xml?
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1480)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1454)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.app.Activity.startActivityForResult(Activity.java:2656)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at com.droiddraw.droiddrawTest$1.onClick(droiddrawTest.java:118)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.view.View.performClick(View.java:2179)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.view.View.onTouchEvent(View.java:3828)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.widget.TextView.onTouchEvent(TextView.java:6291)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.view.View.dispatchTouchEvent(View.java:3368)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1707)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1197)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.app.Activity.dispatchTouchEvent(Activity.java:1993)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1691)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1525)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.os.Handler.dispatchMessage(Handler.java:99)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.os.Looper.loop(Looper.java:123)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at android.app.ActivityThread.main(ActivityThread.java:3948)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at java.lang.reflect.Method.invokeNative(Native Method)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at java.lang.reflect.Method.invoke(Method.java:521)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
    10-21 02:44:48.597: ERROR/AndroidRuntime(728):     at dalvik.system.NativeStart.main(Native Method)
    程序本身没有问题,你忘了在Androidmanifest.xml里面注册你的Activity了在Androidmanifest.xml的<application>下面加上这个就好
    <activity android:name="rgActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.SAMPLE_CODE"/>
                </intent-filter>
    </activity>
    每个activity都必须在Androidmanifest里面注册
      

  2.   

    楼主贴的部分是Console的提示。出错异常的提示在:
    Window→showView→other→Android→LogCat。
    查找类型“E”的输出。
      

  3.   

    10-21 02:44:48.597: ERROR/AndroidRuntime(728): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.droiddraw/com.droiddraw.rgActivity}; have you declared this activity in your AndroidManifest.xml? 在AndroidManifest.xml注册Activity就可以了。<activity android:name=".rgActivity" //得加上"."
                      android:label="@string/app_name"> 
    </activity> 
      

  4.   

    你2楼那些错误信息是在ddms哪位置看的啊,我在eclipse里通过open perspective打开ddms,运行项目,没找到你贴出来的错误信息啊,相反,以前Console里有的启动模拟器的信息都看不到了
      

  5.   


    什么错误啊?  你在logcat里面看的?  
    logcat不仅仅是打印你程序的信息,也会打印系统的信息,有些错误不是你程序的错误
      

  6.   

    谢谢,受教!还是要多看logcat
    只是有没有比较好的办法查看多行显示。
      

  7.   

    <activity android:name="rgActivity"</activity> 
    也是可以的,并非一定要加上“.”
    当然可以再application处直接点击添加activity