开发者

ClassCastException Android Eclipse

I am getting the following errors when trying to run my application: Can you please tell me where I am going wrong :) Oh and also, how can I find out which line in my code the error is occurring? thanks

    02-03 08:01:31.159: ERROR/AndroidRuntime(281): FATAL EXCEPTION: main
02-03 08:01:31.159: ERROR/AndroidRuntime(281): java.lang.RuntimeException: Unable to instantiate application com.android.demo.notepad2.NoteEdit: java.lang.ClassCastException: com.android.demo.notepad2.NoteEdit
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:649)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4232)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.app.ActivityThread.access$3000(ActivityThread.java:125)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.os.Looper.loop(Looper.java:123)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.app.ActivityThread.main(ActivityThread.java:4627)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at java.lang.reflect.Method.invokeNative(Native Method)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at java.lang.reflect.Method.invoke(Method.java:521)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at dalvik.system.NativeStart.main(Native Method)
02-03 08:01:31.159: ERROR/AndroidRuntime(281): Caused by: java.lang.ClassCastException: com.android.demo.notepad2.NoteEdit
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.app.Instrumentation.newApplication(Instrumentation.java:957)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.app.Instrumentation.newApplication(Instrumentation.java:942)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:644)
02-03 08:01:31.159: ERROR/AndroidRuntime(281):     ... 11 more

This is my NoteEdit class:

package com.android.demo.notepad2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class NoteEdit extends Activity {
    EditText mTitleText;
    EditText mBodyText;
    Long mRowId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.note_edit);
        setTitle(R.string.edit_note);
        mTitleText = (EditText) findViewById(R.id.title);
        mBodyText = (EditText) findViewById(R.id.body);
        Button confirmButton = (Button) findViewById(R.id.confirm);
        mRowId = null;
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            String title = extras.getString(NotesDbAdapter.KEY_TITLE);
            String body = extras.getString(NotesDbAdapter.KEY_BODY);
            mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);

            if (title != null) {
                mTitleText.setText(title);
            }
            if (body != null) {
                mBodyText.setText(body);
            }
        }

        confirmButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                Bundle bundle = new Bundle();
                bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText()
                        .toString());
                bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText()
                        .toString());
                if (mRowId != null) {
                    bundle.putLo开发者_如何学Cng(NotesDbAdapter.KEY_ROWID, mRowId);
                }
                Intent mIntent = new Intent();
                mIntent.putExtras(bundle);
                setResult(RESULT_OK, mIntent);
                finish();
            }
        });

    }
}

This is the NoteEdit class layout:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/title" />
        <EditText
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/body" />
    <EditText
        android:id="@+id/body"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:scrollbars="vertical" />

    <Button
        android:id="@+id/confirm"
        android:text="@string/confirm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>


I think you need to put something like this in your manifest(that is if it's not yet present in your manifest)

 <activity android:name=".NoteEdit"
              android:label="@string/app_name"
          >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

Your code doesn't seem to have an error so maybe this one can solve your problem.


If you cannot find the error in your code, sometimes this happens in eclipse after you've done a major edit. All you need to do is open the gen folder of your project. Delete the R.java file. Clean up the project and you should be good to go.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜