startActivityForResult外推行为

时间:2013-02-21 23:09:39

标签: android

我在代码中看不出有什么问题:

我有一个活动(让我们称之为; A)以这种方式开始另一个活动(B):

在A:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
        ...
    gridOpciones.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int pos, long 
            intent = new Intent(ReproductorActivity.this, B.class);
            startActivityForResult(intent, B.RESULT_PATH);
    }
}

我在OnLongItemClickListener中使用此onItemLongClick

分配给B'listview
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
    ctx.onLongClick(arg2);
    return false;
}

将Ctx作为OnLongItemClickListener和onLong的B对象所有者在B类中点击此方法:

public void onLongClick(int arg2) {
    Intent returnIntent = new Intent();
    returnIntent.putExtra("PATH", getItem(arg2));
    setResult(Activity.RESULT_OK, returnIntent);
    finish();
}

我在A中也有一个回调函数:

@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data){               
    if (requestCode == B.RESULT_PATH) {
        if (resultCode == RESULT_OK) {
        ... get data, do stuff....                   
        }
    }
}

所以,我的问题是它没有用。它显示B但是什么时候回来......

我调试了它,当我单击A类中的网格元素时,它的OnItemClickListener的onItemClick被调用,但在此之后,调用了A的onActivityResult,之后它被调用了出现B活动。我在B的项目中长按并执行onLongClick(int),但A.onActivityResult中没有回调...

我不知道会发生什么,任何想法?任何线索?

感谢。

编辑:调用OnActivityResult时,requestCode == B.RESULT_PATH

1 个答案:

答案 0 :(得分:0)

在onActivityResult中,第一个if语句中应该有requestCode而不是resultCode:

@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data){               
    if (requestCode == FileSelector.RESULT_PATH) {
        if (resultCode == RESULT_OK) {
        ... get data, do stuff....                   
        }
    }
}