0

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

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

在一个:

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 是 B 类中 OnLongItemClickListener 和 onLongClick 的 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 类中的网格元素时,它的 OnItemClickListeneronItemClick被调用,但是在此之后,AonActivityResult被调用,然后出现 B 活动。我长按 B 的一个项目,它执行onLongClick(int)但没有回调A.onActivityResult...

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

谢谢。

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

4

1 回答 1

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....                   
        }
    }
}
于 2013-02-21T23:18:32.320 回答