我是Android开发的初学者,所以我有专家的问题
我的事件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:manifest中的launchmode,setResult为0等),这里的帖子关注这个问题。 但我没有找到解决方案..
答案 0 :(得分:0)
你不应该在startActivityForResult中使用RESULT_OK,因为RESULT_OK是一个常量,其值为-1,如果requestCode低于0,则不会在onActivityResult()中传递;
定义自己的常量(PUBLIC STATIC FINAL int DOG_REQUEST = 1;
)并在startActivityForResult(intent, DOG_REQUEST);
和onActivityResult(...)
,if(requestCode == DOG_REQUEST)
请参阅documentation。
答案 1 :(得分:0)