意图一直在为android失败

时间:2013-04-08 15:05:52

标签: java android eclipse android-intent

任何人都知道为什么这个意图失败

以下是log cat中的日志

04-08 10:52:51.782: E/SpannableStringBuilder(10411): SPAN_EXCLUSIVE_EXCLUSIVE spans  cannot have a zero length
04-08 10:52:51.782: E/SpannableStringBuilder(10411): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
04-08 10:52:52.542: E/SpannableStringBuilder(10411): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
04-08 10:52:52.542: E/SpannableStringBuilder(10411): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
04-08 10:52:53.797: E/AndroidRuntime(10411): FATAL EXCEPTION: main
04-08 10:52:53.797: E/AndroidRuntime(10411): java.lang.RuntimeException: Unable to start   activity ComponentInfo   {com.better.work.learning.letters.and.more.awesome/com.better.work.learning.letters.and.more.awesome.spellingLevel1}: android.content.res.Resources$NotFoundException: Resource ID #0x16
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.app.ActivityThread.access$600(ActivityThread.java:140)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.os.Looper.loop(Looper.java:137)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.app.ActivityThread.main(ActivityThread.java:4898)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at java.lang.reflect.Method.invokeNative(Native Method)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at java.lang.reflect.Method.invoke(Method.java:511)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at dalvik.system.NativeStart.main(Native Method)
04-08 10:52:53.797: E/AndroidRuntime(10411): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x16
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.content.res.Resources.getValue(Resources.java:1026)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.content.res.Resources.getDrawable(Resources.java:671)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.view.View.setBackgroundResource(View.java:14494)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at com.better.work.learning.letters.and.more.awesome.spellingLevel1.onCreate(spellingLevel1.java:72)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.app.Activity.performCreate(Activity.java:5206)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
04-08 10:52:53.797: E/AndroidRuntime(10411):    ... 11 more

代码保持失败这里是清单文件

这不是完整的代码,但是当我尝试加载扩展活动并导入的sellingLevel1类时,代码基本没有错误。它也作为其他一切包含在包中。当我点击spellingLevelPicker类

上的按钮1时,应用程序也会运行但不会失败

修改

好吧,它在这里失败了

public class spellingLevel1 extends Activity {

Context mContext = null;
private RelativeLayout mCanvasContainer;
private SCanvasView mSCanvas;
private ImageView mImageView1,mImageView2,mImageView3,mImageView4,mImageView5,mImageView6,mImageView7,mImageView8;
public int currentLetter;
private int rando;
int[] myImageList = {
        R.drawable.lettersa, R.drawable.lettersb,
        R.drawable.lettersc, R.drawable.lettersd,
        R.drawable.letterse, R.drawable.lettersf, R.drawable.lettersg,
        R.drawable.lettersh, R.drawable.lettersi, R.drawable.lettersj,
        R.drawable.lettersk, R.drawable.lettersl, R.drawable.lettersm,
        R.drawable.lettersn, R.drawable.letterso, R.drawable.lettersp,
        R.drawable.lettersq, R.drawable.lettersr, R.drawable.letterss, R.drawable.letterst,
        R.drawable.lettersu, R.drawable.lettersv, R.drawable.lettersw,
        R.drawable.lettersx, R.drawable.lettersy, R.drawable.lettersz};





/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.spelling);

    mContext = this;
    mCanvasContainer = (RelativeLayout) findViewById(R.id.canvas_container);
    mSCanvas = new SCanvasView(mContext);




ImageView mImageView01 = (ImageView) findViewById(R.id.imageView1);       
ImageView mImageView02 = (ImageView) findViewById(R.id.imageView2);       
ImageView mImageView03 = (ImageView) findViewById(R.id.imageView3);       
ImageView mImageView04 = (ImageView) findViewById(R.id.imageView4);       
ImageView mImageView05 = (ImageView) findViewById(R.id.imageView5);       
ImageView mImageView06 = (ImageView) findViewById(R.id.imageView6);       
ImageView mImageView07 = (ImageView) findViewById(R.id.imageView7);       
ImageView mImageView08 = (ImageView) findViewById(R.id.imageView8);       
Random rando = new Random();


currentLetter = rando.nextInt(myImageList.length);

mImageView01.setBackgroundResource(currentLetter);
mImageView02.setBackgroundResource(currentLetter);
mImageView03.setBackgroundResource(currentLetter);
mImageView04.setBackgroundResource(currentLetter);

}

}

下面有关于破坏的公共空白,但如果我评论了imageview设置后台资源,那么它就不会失败

3 个答案:

答案 0 :(得分:0)

首先创建一个private Context context作为您班级的成员。

然后在onCreate中添加:this.context = context;

或者如果你在一个视图类中,你可以将Context从activity传递给你的构造函数,所以它会像这样

public className(Context context) {
     this.context = context;
}

,最后是改变这个

mLevel1.setOnClickListener(new OnClickListener() {
        public void onClick (View v) {
            Intent myIntent = new Intent(v.getContext(), spellingLevel1.class); //Coming soon 
            startActivityForResult(myIntent, 0);        

        }
        });

到这个

mLevel1.setOnClickListener(new OnClickListener() {
        public void onClick (View v) {
            Intent myIntent = new Intent(context, spellingLevel1.class); //Coming soon 
            startActivityForResult(myIntent, 0);        

        }
        });

我希望这会回答你的问题:) 如果您对我的回答有任何疑问,请随时在评论中提问:)

答案 1 :(得分:0)

logcat中的这些行

04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.content.res.Resources.getDrawable(Resources.java:671)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at android.view.View.setBackgroundResource(View.java:14494)
04-08 10:52:53.797: E/AndroidRuntime(10411):    at com.better.work.learning.letters.and.more.awesome.spellingLevel1.onCreate(spellingLevel1.java:72)

告诉我你的问题是你试图在你的onCreate方法中实例化的一个drawables。检查您在文件结构中包含的drawable列表,以验证您是否拥有列出的所有drawable。 (并调试你失败时获得的价值)

而不是

currentLetter = rando.nextInt(myImageList.length);

(它将为您提供介于0和myImageList.length -1之间的值)您需要使用

currentLetter = myImageList[rando.nextInt(myImageList.length)];

(它将为您提供为可绘制资源生成的int)

答案 2 :(得分:0)

我的问题的答案是在代码中没有任何错误我调用的图片太大而且与其他图像视图相冲突因为可绘制资源的错误