2013-01-22 4 views
0

J'ai quelques problèmes en appelant startActivityForResult de onClickListener.secActivity appellent parfois seulement StartActivityForResult

Dans la première activité que j'ai 2 façons de commencer startActivityForResult

  1. ListView avec OnItemClick() -Lorsque j'appelle startActivityForResult du ListView OnItemClick() il fonctionne très bien

  2. Button avec OnClickListener() -mais quand J'appelle startActivityForResult de la Button OnClickListener() la deuxième activité ne commencera pas OnActivityResult de quelque part. voici mon code:

* Mise à jour: merci pour votre temps, ce que vous offerd est l'un des changements que je allready essayé, mais son reste le même mon nouveau code:

premier appel avec startActivityForResult() (fin des travaux - à l'intérieur OnCreate()!):

listView.setOnItemClickListener(new OnItemClickListener() 
    { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
       long id) 
     { 
      Intent intent = new Intent(NoteNames.this, EditNote.class); 
      intent.putExtra("subject", noteList.get(position).getSubjectText()); 
      intent.putExtra("body", noteList.get(position).getBodyText()); 
      startActivityForResult(intent, position); 
     } 


    }); 

Deuxième appel: wont start onActivityResult():

@Override 
public void onClick(View v) { 

    if(v.getId() == addButton.getId()){ 
     Intent intent = new Intent(NoteNames.this, EditNote.class); 
     intent.putExtra("subject", ""); 
     intent.putExtra("body", ""); 
     startActivityForResult(intent, idOfNew); 
    } 

} 

c'est le SecondActivity:

private EditText subjectEditText, bodyEditText; 
private Button approve, decline; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    setContentView(R.layout.activity_edit_note); 

    subjectEditText = (EditText) findViewById(R.id.note_head); 
    bodyEditText = (EditText) findViewById(R.id.note_text); 
    approve = (Button) findViewById(R.id.approve_button); 
    decline = (Button) findViewById(R.id.decline_button); 

    Intent intent = getIntent(); 
    String subject = intent.getExtras().getString("subject"); 
    String body = intent.getExtras().getString("body"); 

    subjectEditText.setText(subject); 
    bodyEditText.setText(body); 

    Handler handler = new Handler(); 
    approve.setOnClickListener(handler); 
    decline.setOnClickListener(handler); 

    super.onCreate(savedInstanceState); 
} 

class Handler implements OnClickListener{ 

    @Override 
    public void onClick(View v) { 



     if (v.getId()==approve.getId()){ 
      Intent intent = getIntent(); 
      intent.putExtra("subject", String.valueOf(subjectEditText.getText())); 
      intent.putExtra("body", String.valueOf(bodyEditText.getText())); 
      setResult(RESULT_OK, intent); 
      finish(); 
     } 

    } 

} 

}

Répondre

0

EDIT: Avant votre question modifié, dans votre code a été écrit final int idOfNew=-5. Eh bien, si le requestCode<0 puis le onActivityResult est pas déclenché. Utilisez un code de requête >0 (peut-être l'identifiant du bouton), cela devrait résoudre votre problème. Tout le reste dans votre code est très bien.

+0

Merci pour votre temps, je n'ai toujours pas compris comment poster du code dans un commentaire alors j'ai mis à jour ma question initiale. – user2000687

+0

Je vais essayer de reproduire le problème. – mihail

+0

trouvé, vérifiez la mise à jour de la réponse :) – mihail

Questions connexes