コードの何が問題なのかわかりません:
この方法で別のアクティビティ(B)を開始するアクティビティ(それを呼び出しましょう; A)があります:
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);
}
}
このonItemLongClickでB 'リストビューに割り当てられたOnLongItemClickListenerを持っています
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
ctx.onLongClick(arg2);
return false;
}
ctx は OnLongItemClickListener の B オブジェクト所有者であり、クラス B でこのメソッドを onLongClick にします。
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