gpt4 book ai didi

java - 找不到 Activity 异常

转载 作者:太空狗 更新时间:2023-10-29 13:41:44 30 4
gpt4 key购买 nike

我从 android 网站上的记事本示例开始。我所做的是向数据库中添加另一个表,并使其在 NotePad 类中可访问(添加了另一个名为 Table 的内部类,它扩展了 BaseColumns) .看来数据库正在被正确读取,我可以直接启动我的 View 。但是,当我尝试以与谷歌启动 NoteEditor 相同的方式启动它时(通过 ACTION_INSERT Intent ),应用程序崩溃了。

我有新表的更新 URI,我要启动的 Activity 的 Intent 过滤器在 list 中(具有正确的 mimetype)。但是,它似乎无法找到并启动我想要的 Activity 。

这是相关的输出:

02-04 01:13:54.964: DEBUG/AndroidRuntime(342): Shutting down VM
02-04 01:13:54.964: WARN/dalvikvm(342): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): FATAL EXCEPTION: main
**02-04 01:13:54.984: ERROR/AndroidRuntime(342): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.INSERT dat=content://com.google.provider.NotePad/courses }**
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.app.Activity.startActivityForResult(Activity.java:2827)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.app.Activity.startActivity(Activity.java:2933)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at com.example.android.notepad.CoursesList.onOptionsItemSelected(CoursesList.java:154)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.app.Activity.onMenuItemSelected(Activity.java:2205)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:748)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.view.View$PerformClick.run(View.java:9080)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.os.Handler.handleCallback(Handler.java:587)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.os.Handler.dispatchMessage(Handler.java:92)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.os.Looper.loop(Looper.java:123)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at android.app.ActivityThread.main(ActivityThread.java:3647)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at java.lang.reflect.Method.invokeNative(Native Method)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at java.lang.reflect.Method.invoke(Method.java:507)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-04 01:13:54.984: ERROR/AndroidRuntime(342): at dalvik.system.NativeStart.main(Native Method)
02-04 01:13:55.014: WARN/ActivityManager(61): Force finishing activity com.example.android.notepad/.CoursesList

我的 list 中有 intent-filter:

   <activity android:name="AddCourseView"
android:theme="@android:style/Theme.Light"
android:label="@string/title_note"
android:screenOrientation="sensor"
android:configChanges="keyboardHidden|orientation"
>
<!-- This filter says that we can view or edit the data of
a single note -->
<intent-filter android:label="@string/resolve_course_edit">
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<action android:name="com.android.notepad.action.EDIT_COURSE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/vnd.google.course" />
</intent-filter>

<!-- This filter says that we can create a new note inside
of a directory of notes. -->
<intent-filter>
<action android:name="android.intent.action.INSERT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.google.course" />
</intent-filter>

</activity>

这是启动 Intent 的代码:

        Uri intentUri = getIntent().getData();
Intent intent = new Intent(Intent.ACTION_INSERT, intentUri );
startActivity( intent );

NotePadProvider 中的 getType() 方法:

@Override
public String getType(Uri uri) {
switch (sUriMatcher.match(uri)) {
case NOTES:
case LIVE_FOLDER_NOTES:
return Notes.CONTENT_TYPE;

case NOTE_ID:
return Notes.CONTENT_ITEM_TYPE;

case COURSES:
return Courses.CONTENT_TYPE;

case COURSE_ID:
return Courses.CONTENT_ITEM_TYPE;

default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
}

这里是我定义类型的地方:

公共(public)最终类记事本{ public static final String AUTHORITY = "com.google.provider.NotePad";

// This class cannot be instantiated
private NotePad() {}

/**
* Notes table
*/
public static final class Notes implements BaseColumns {
// This class cannot be instantiated
private Notes() {}

/**
* The content:// style URL for this table
*/
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/notes");

/**
* The MIME type of {@link #CONTENT_URI} providing a directory of notes.
*/
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.note";

/**
* The MIME type of a {@link #CONTENT_URI} sub-directory of a single note.
*/
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.note";

/**
* The default sort order for this table
*/
public static final String DEFAULT_SORT_ORDER = "modified DESC";

/**
* The title of the note
* <P>Type: TEXT</P>
*/
public static final String TITLE = "title";

/**
* The note itself
* <P>Type: TEXT</P>
*/
public static final String NOTE = "note";

/**
* The task content
* <P>Type: TEXT</P>
*/
public static final String TASK_DESCRIPTION = "description";
/**
* The task location
* <P>Type: TEXT</P>
*/
public static final String TASK_LOCATION = "location";

/**
* The task start time
* as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC
*/
public static final String TASK_START_TIME = "starttime";

/**
* The task end time
* as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC
*/
public static final String TASK_END_TIME = "endtime";


/**
* The timestamp for when the note was created
* <P>Type: INTEGER (long from System.curentTimeMillis())</P>
*/
public static final String CREATED_DATE = "created";

/**
* The timestamp for when the note was last modified
* <P>Type: INTEGER (long from System.curentTimeMillis())</P>
*/
public static final String MODIFIED_DATE = "modified";

/**
* if it is an assignment/test, the weight of it is here
*/
public static final String WEIGHT = "weight";

/**
* the course the note is assigned to
*/
public static final String RELATED_COURSE = "relatedcourse";


}

/**
* Courses table
*/
public static final class Courses implements BaseColumns {
// This class cannot be instantiated
private Courses() {}

/**
* The content:// style URL for this table
*/
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/courses");

/**
* The MIME type of {@link #CONTENT_URI} providing a directory of notes.
*/
public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.course";

/**
* The MIME type of a {@link #CONTENT_URI} sub-directory of a single note.
*/
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.course";

/**
* The default sort order for this table
*/
public static final String DEFAULT_SORT_ORDER = "modified DESC";

/**
* The title of the note
* <P>Type: TEXT</P>
*/
public static final String TITLE = "title";

public static final String PROFESSOR = "professor";

public static final String DESCRIPTION = "description";

/**
* The timestamp for when the note was created
* <P>Type: INTEGER (long from System.curentTimeMillis())</P>
*/
public static final String CREATED_DATE = "created";

/**
* The timestamp for when the note was last modified
* <P>Type: INTEGER (long from System.curentTimeMillis())</P>
*/
public static final String MODIFIED_DATE = "modified";
}

这是 list 的提供者部分:

    <provider android:name="NotePadProvider"
android:authorities="com.google.provider.NotePad"/>

好的,我将 Intent 启动更改为:

        Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setType(Courses.CONTENT_TYPE);
startActivity(intent);

所以类型上应该没有混淆。现在我得到这个错误:

02-06 22:48:26.076: 错误/AndroidRuntime(640): java.lang.RuntimeException: 无法启动 Activity ComponentInfo{com.example.android.notepad/com.example.android.notepad.AddCourseView}: java.lang.NullPointerException

最佳答案

我猜你的 Intent 有问题。

编辑:

请发布 list 的提供者部分 :)

编辑 2:

com.example.android.notepad.AddCourseView 不存在。

包路径是否正确?类名是否正确?AddCourseView 是否扩展 Activity?

随时给我打分...再多 2 个,我可以删除帖子并获得徽章...

关于java - 找不到 Activity 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4916265/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com