2014-08-12 1 views
0

Я новичок на развитии Android поэтому у меня вопрос для экспертовсобытия onactivityresult не работает

Моего событие onActivityResult не работает, и я не понимаю, почему ..

Это мой основным видом деятельности которой запуск суб-активности

@Override 
public void onItemClick(AdapterView<?> parent, View view, ...) 
{ 
    Object o = lv.getItemAtPosition(position); 
    String str = (String)o; 
    Dog d = new Dog(); 
    d.setName("Blacko"); 
    d.setKind(str); 
    d.setAge(2); 
    d.setColor("Noir"); 
    Intent intent = new Intent(this,DogDetails.class); 
    intent.putExtra("Dog", d); 
    startActivityForResult(intent,RESULT_OK); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, ...) 
{ 
    super.onActivityResult(requestCode,resultCode,data); 
    if(requestCode == RESULT_OK) 
    { 
     String name = data.getExtras().getString("DogName"); 
    la.add(name); 
    lv.setAdapter(la); 
    } 
} 

And here, this is the code of my sub-activity 

@Override 
public void onClick(View v) 
{ 
    Intent intent = new Intent(); 
    intent.putExtra("DogName", Name.getText()); 
    setResult(RESULT_OK, intent); 
    finish(); 
} 

Я уже искал на многих форумах для решения (Android: launchmode в манифесте, setResult до 0, и т.д ..) и посты здесь заинтересованные эта проблема .. Но я не нашел решения ..

ответ

0

Вы не должны использовать RESULT_OK в свой startActivityForResult, потому что RESULT_OK является константой, значение которой равно -1, а если код запроса меньше 0, он не будет передан в onActivityResult();

Определите собственную постоянную (PUBLIC STATIC FINAL int DOG_REQUEST = 1;) и использовать его как в startActivityForResult(intent, DOG_REQUEST); и onActivityResult(...), if(requestCode == DOG_REQUEST)

См documentation об этом.