【发布时间】:2010-11-21 14:14:20
【问题描述】:
我目前正在尝试使用Intent 通过OptionsMenuItem 调用另一个活动。我有 2 个布局。第一个布局有一个EditText,带有一个从数据库中检索到的字符串。第二个布局也有一个EditText,它是空的。 OptionsMenuItem 位于第一个布局中。每当我单击MenuItem 时,它应该调用第二个布局并将文本从第一个布局提取到第二个布局中的EditText,但它却崩溃了。我尝试使用 ActivityResult 方式,但我仍然无法让它工作。希望大家帮帮我。
这是我的 Java 代码,其意图是针对第一个布局的主要活动:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
// Build the menus that are shown when editing.
if (mState == STATE_EDIT) {
menu.add(0, REVERT_ID, 0, R.string.menu_revert)
.setIcon(android.R.drawable.ic_menu_revert);
if (!mNoteOnly) {
menu.add(0, DELETE_ID, 0, R.string.menu_delete)
.setIcon(android.R.drawable.ic_menu_delete);
menu.add(1, ADD_ID, 1, R.string.add_namespace);
menu.add(2, MENU_ITEM_ADD, 2, R.string.menu_add);
}
// Build the menus that are shown when inserting.
} else {
menu.add(0, DISCARD_ID, 0, R.string.menu_discard)
.setIcon(android.R.drawable.ic_menu_delete);
menu.add(1, ADD_ID, 1, R.string.add_namespace);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle all of the possible menu actions.
switch (item.getItemId()) {
case DELETE_ID:
deleteNote();
finish();
break;
case DISCARD_ID:
cancelNote();
break;
case REVERT_ID:
cancelNote();
break;
case ADD_ID:
addNamespace();
break;
case MENU_ITEM_ADD:
testActivity();
break;
}
return super.onOptionsItemSelected(item);
}
private final void testActivity()
{
Intent i = new Intent(this, TitleEditor.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case(STATIC_INTEGER_VALUE):
{
if(resultCode == Activity.RESULT_OK)
{
newTextTemplate = (EditText) findViewById(R.id.smsTemplate);
String newTemplate = data.getStringExtra(TitleEditor.PUBLIC_STATIC_STRING_IDENTIFIER);
newTextTemplate.setText(newTemplate);
}
break;
}
}
}
这是我的第二个布局的java代码:
public class TitleEditor extends Activity implements View.OnClickListener {
private static final String[] PROJECTION = new String[] {
NotePad.Notes._ID, // 0
NotePad.Notes.TITLE, // 1
NotePad.Notes.TEMPLATE, // 2
};
private static final int COLUMN_INDEX_TITLE = 1;
private static final int COLUMN_INDEX_TEMPLATE = 2;
private Cursor mCursor;
private EditText mToContacts;
private EditText mFromTemplate;
public static final String PUBLIC_STATIC_STRING_IDENTIFIER = null;
private Uri mUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.title_editor);
mUri = getIntent().getData();
mCursor = managedQuery(mUri, PROJECTION, null, null, null);
mFromTemplate = (EditText) this.findViewById(R.id.smsTemplate);
mFromTemplate.setOnClickListener(this);
Button b = (Button) findViewById(R.id.ok);
b.setOnClickListener(this);
}
public void onClick(View v) {
Intent resultIntent = new Intent();
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, NoteEditor.smsTemplate);
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
}
srinathhs 请求的我的 logcat: 11-22 04:39:12.635:错误/AndroidRuntime(456):未捕获的处理程序:线程主因未捕获的异常而退出 11-22 04:39:12.815: 错误/AndroidRuntime(456): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.android.notepad/com.example.android.notepad.TitleEditor}: java.lang 。空指针异常 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.app.ActivityThread.access$2100(ActivityThread.java:116) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.os.Handler.dispatchMessage(Handler.java:99) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.os.Looper.loop(Looper.java:123) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.app.ActivityThread.main(ActivityThread.java:4203) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 java.lang.reflect.Method.invokeNative(Native Method) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 java.lang.reflect.Method.invoke(Method.java:521) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 11-22 04:39:12.815:错误/AndroidRuntime(456):在 dalvik.system.NativeStart.main(本机方法) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 由: java.lang.NullPointerException 引起 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.content.ContentResolver.acquireProvider(ContentResolver.java:574) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.content.ContentResolver.query(ContentResolver.java:147) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.app.Activity.managedQuery(Activity.java:1493) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 com.example.android.notepad.TitleEditor.onCreate(TitleEditor.java:84) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 11-22 04:39:12.815: 错误/AndroidRuntime(456): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364) 11-22 04:39:12.815: 错误/AndroidRuntime(456): ... 11 更多
【问题讨论】:
-
应用程序崩溃时必须有堆栈跟踪。可以在这里添加吗?
-
什么是崩溃?查看我浏览次数最多的问题(点击我的名字)了解常见的疏忽。
-
@srinathhs:如果您在谈论 LogCat,我可以发布它。但我没有看到它有任何错误。
-
我不知道如何格式化我的 logcat 以使其看起来很好。我尝试为第二个活动添加清单代码,但无法这样做,因为它只显示了 1 行句子。
-
好的,我找到了堆栈跟踪。如果我没记错的话,错误应该是 nullpointerexception。如果我错了,请纠正我..
标签: android