2010-11-21 5 views
0


В настоящее время я пытаюсь позвонить другому мероприятию через OptionsMenuItem, используя Intent. У меня 2 макета. Первый макет имеет EditText со строкой, которая извлекается из базы данных. Второй макет также содержит EditText, который пуст. OptionsMenuItem находится в 1-м макете. Всякий раз, когда я нажимаю на MenuItem, он должен вызвать второй макет и извлечь текст из 1-го макета в EditText во втором макете, но вместо этого он сработает. Я попытался использовать способ ActivityResult, но я все еще не могу заставить его работать. Надеюсь, вы, ребята, можете мне помочь.Intent вызывает сбой мое приложение

Это мой Java-код, где намерение для основной деятельности с 1-го макета:

@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-код с 2-макет:

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(); 
    } 
} 

Мой LogCat с просьбой srinathhs: 11-22 04: 39: 12.635: ERROR/AndroidRuntime (456): обработчик нечистоты: выход из основного потока из-за неперехваченного исключения 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): java.lang. RuntimeException: невозможно запустить Activity ComponentInf o {com.example.android.notepad/com.example.android.notepad.TitleEditor}: java.lang.NullPointerException 11-22 04: 39: 12.815: ОШИБКА/AndroidRuntime (456): at android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2401) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2417) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at android.app.ActivityThread.access $ 2100 (ActivityThread.java:116) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1794) 11-22 04: 39: 12.815: ОШИБКА/AndroidRuntime (456): at android.os.Handler.dispatchMessage (Handler.java:99) 11-22 04: 39: 12.815: ОШИБКА/AndroidRuntime (456): at android.os.Looper.loop (Looper.java:123) 11-22 04: 39: 12.815: ОШИБКА/AndroidRuntime (456): at android.app.ActivityThread.main (ActivityThread.java:4203) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at java.lang.reflect.Method.invokeNative (собственный способ) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): при java.lang.reflect.Method.invoke (Method.java:521) 11- 22 04: 39: 12.815: ERROR/AndroidRuntime (456): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:791) 11-22 04: 39: 12.815: ОШИБКА/AndroidRuntime (456)): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:549) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at dalvik.system.NativeStart.main (собственный метод) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): вызвано: java.lang.NullPointerException 11-22 04: 39: 12.815: ОШИБКА/A ndroidRuntime (456): at android.content.ContentResolver.acquireProvider (ContentResolver.java:574) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at android.content.ContentResolver.query (ContentResolver.java: 147) 11-22 04: 39: 12.815: ОШИБКА/AndroidRuntime (456): at android.app.Activity.managedQuery (Activity.java:1493) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456) : at com.example.android.notepad.TitleEditor.onCreate (TitleEditor.java:84) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java: 1123) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2364) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456) : ... 11 далее

+1

Должно быть трассировка стека, когда ваше приложение разбилось. Можете ли вы добавить это здесь? – srinathhs

+0

Что случилось? См. Мой наиболее просматриваемый вопрос (щелкните мое имя) для общего контроля. – KevinDTimm

+0

@srinathhs: если вы говорите о LogCat, я могу опубликовать его. Но я даже не вижу ошибок. –

ответ

0

Этот вопрос закрыт. Я случайно нашел ответ, чтобы решить эту ошибку. Кажется, что 2 строки моего кода мешают созданию второго действия. Спасибо людям ^^

2

Быстро вопрос, вы зарегистрировали 2-ю операцию в своем манифесте?Если нет, это приведет к сбою приложения каждый раз, когда он будет вызван.

+0

Да, активность зарегистрирована в файле манифеста. Не знаю, что не так с моим кодом. –

Смежные вопросы