事件onactivityresult不起作用

时间:2014-08-12 15:09:42

标签: android events onactivityresult

我是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等),这里的帖子关注这个问题。 但我没有找到解决方案..

2 个答案:

答案 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)