2010-11-21 6 views
0


J'essaie actuellement d'appeler une autre activité via un OptionsMenuItem en utilisant Intent. J'ai 2 mises en page. La 1ère mise en page a un EditText avec une chaîne qui est extraite d'une base de données. La deuxième disposition a également un EditText qui est vide. Le OptionsMenuItem est dans la 1ère mise en page. Chaque fois que je clique sur le MenuItem, il est censé appeler la 2ème mise en page et extraire le texte de la première mise en page dans le EditText dans la deuxième mise en page, mais à la place il se bloque. J'ai essayé d'utiliser la méthode ActivityResult mais je n'arrive toujours pas à le faire fonctionner. J'espère que vous pouvez m'aider.Intent bloque mon application

Ceci est mon code Java où l'intention est de l'activité principale avec la 1ère mise en page:

@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; 
    } 
} 
} 

Ceci est mon code java avec la 2e mise en page:

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

Mon logcat demandé par srinathhs: 11-22 04: 39: 12.635: ERREUR/AndroidRuntime (456): gestionnaire Uncaught: thread principal sortant en raison d'une exception non interceptée 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): java.lang. RuntimeException: Impossible de démarrer l'activité ComponentInf o {com.example.android.notepad/com.example.android.notepad.TitleEditor}: java.lang.NullPointerException 11-22 04: 39: 12.815: ERREUR/AndroidRuntime (456): at android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2401) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à l'adresse android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2417) 11-22 04: 39: 12.815: ERREUR/AndroidRuntime (456): at android.app.ActivityThread.access $ 2100 (ActivityThread.java:116) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à l'adresse android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1794) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à l'adresse android.os.Handler.dispatchMessage (Handler.java:99) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at android.os.Looper.loop (Looper.java:123) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): at android.app.ActivityThread.main (ActivityThread.java:4203) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à java.lang.reflect.Method.invokeNative (méthode native) 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): à l'adresse com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:791) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:549) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à dalvik.system.NativeStart.main (méthode native) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): Causée par: java.lang.NullPointerException 11-22 04: 39: 12.815: ERROR/A ndroidRuntime (456): à android.content.ContentResolver.acquireProvider (ContentResolver.java:574) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à android.content.ContentResolver.query (ContentResolver.java: 147) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à l'adresse android.app.Activity.managedQuery (Activity.java:1493) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456) : à com.example.android.notepad.TitleEditor.onCreate (TitleEditor.java:84) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à android.app.Instrumentation.callActivityOnCreate (Instrumentation.java: 1123) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456): à android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2364) 11-22 04: 39: 12.815: ERROR/AndroidRuntime (456) : ... 11 plus

+1

Il doit y avoir une trace de pile lorsque votre application a planté. Pouvez-vous ajouter cela ici? – srinathhs

+0

Quel est le crash? Voir ma question la plus regardée (cliquez sur mon nom) pour un oubli commun. – KevinDTimm

+0

@srinathhs: si vous parlez de LogCat, je peux le poster. Mais je ne vois aucune erreur à ce sujet. –

Répondre

0

Cette question est fermée. J'ai accidentellement trouvé la réponse pour résoudre cette erreur. Il semble que 2 lignes de mon code interfèrent avec la création de la 2ème activité. Merci aux gens ^^

2

Question rapide, avez-vous enregistré la 2ème activité au sein de votre manifeste?Si ce n'est pas le cas, l'application se bloque chaque fois qu'elle est invoquée.

+0

Oui, l'activité est enregistrée dans le fichier manifeste. Aucune idée de ce qui ne va pas avec mon code. –

Questions connexes