onActivityResult()不会被调用的活动onActivityResult

2023-09-12 04:51:34 作者:与时光共眠

我已经看了几个例子,我找不到什么,我做错了。

I have looked at several examples and I cant find what I am doing wrong.

我的onActivityResult()方法不会被调用我的活动;

my onActivityResult() method is not being called on my activity;

TransactionFormActivity 正在启动一个名为新活动 VehicleSearchActivity 具有customListAdapter.when我点击在某个项目该适配器我想传递一个值回 TransactionFormActivity

TransactionFormActivity is starting up a new activity called VehicleSearchActivity which has a customListAdapter.when I click on an item in that adapter I want to pass a value back to the TransactionFormActivity.

下面是我的两个活动code:

here is the code from my two activities:

code 的onClick()

convertView.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
         Intent i = new Intent(context, TransactionFormActivity.class);
         i.putExtra("VehicleId", rowItem.VehicleId);
         i.putExtra("VehicleReg", rowItem.Registration);
         context.startActivityForResult(i,0);           
         context.finish();
    }
}

和这里是code在TransactionFormActivity

and here is the code in The TransactionFormActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            vehicleId = data.getIntExtra("VehicleId", 0);
            vehicleReg.setText(data.getStringExtra("VehcilceReg"));
        }
    }
}

当我调试,并把破发点,我的code在onClickListener正在运行。然而,应用程序返回到TransactionFormActivty和 OnActivityResult()方法不会被调用?

When I debug and put break points, my code in the onClickListener is being run. However the app returns to the TransactionFormActivty and the OnActivityResult() method is never called?

我能是做错了。

推荐答案

您正在做一个小错误。

在你的FirstActivity你应该叫:

In your FirstActivity you should call:

//your code...
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);

在你的SecondActivity你应该叫:

In your SecondActivity you should call:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();

,然后回到你的FirstActivity使用onActivityResult来取回数据

and then back in your FirstActivity you use the onActivityResult to get the data back

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}
 
精彩推荐