onActivity结果无效

时间:2016-12-21 07:33:20

标签: android android-activity

我的活动类,我将一些结果传递给另一个活动,以便它可以执行一些不同的操作

            @Override
            public void onClick(View view) {
                Intent i = new Intent(OrderDetails.this, AppointmentSchedulingActivity.class);
                i.putExtra("JobID", jobid);
                i.putExtra("Resultt","1");
                startActivityForResult(i,1);
            }

我的第二个活动是使用此onActivityResult代码在onActivity Result方法中获得上述活动的响应,但此onActivityResult方法未触发

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1)
        {
            if (resultCode == RESULT_OK) {
                try {
                    continuee.setText("Reschedule");

                    continuee.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            ListofAddressesDataModel selectedItem = ((ListofAddressesAdapter) add.getAdapter()).getSelectedItem();
                            String customeraddressid = selectedItem.getCustaddid();
                            SharedPreferences.Editor editor = getSharedPreferences(AppConstants.VERIFICATION, MODE_PRIVATE).edit();
                            editor.putString(AppConstants.SELECTEDCUSTOMERADDRESSID, customeraddressid);
                            new reschedulejob().execute(jobid, customeraddressid, dateTxt, timeTxt);


                        }
                    });
                }
                catch (Exception e)
                {

                }
            }
        }

        else {

            continuee.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(AppointmentSchedulingActivity.this, OrderSummary1.class);
                    ListofAddressesDataModel selectedItem = ((ListofAddressesAdapter) add.getAdapter()).getSelectedItem();
                    String name = selectedItem.getName();
                    String phone = selectedItem.getPhone();
                    String address = selectedItem.getFulladdress();
                    String customeraddressid = selectedItem.getCustaddid();
                    SharedPreferences.Editor editor = getSharedPreferences(AppConstants.VERIFICATION, MODE_PRIVATE).edit();
                    editor.putString(AppConstants.SELECTEDCUSTOMERNAME, name);
                    editor.putString(AppConstants.SELECTEDCUSTOMERPHONE, phone);
                    editor.putString(AppConstants.SELECTEDCUSTOMERADDRESS, address);
                    editor.putString(AppConstants.SELECTEDCUSTOMERADDRESSID, customeraddressid);
                    editor.commit();
                    startActivity(intent);
                }
            });
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

所以我想知道为什么我的onActivity结果没有被解雇。我想在继续按钮上执行两个不同的操作。我应该把它放在onResume方法中吗?我只想在这里执行两个不同的动作

enter image description here

3 个答案:

答案 0 :(得分:1)

在给定的代码中,您从第一堂课开始调用startActivityForResult(),而在第二堂课中有onActivityResult()

这就是你所写的,所以我假设有两种不同的活动来实现上述方法。 请记住,startActivityForResult()onActivityResult()这两种方法必须属于同一活动。

如果您不知道如何使用startActivityForResult(),请查看本教程here

希望这会有所帮助:)

答案 1 :(得分:0)

startActivityForResult(..)用于将数据返回给调用者活动。

如果你想传递数据,那么使用startActivity(intent)并在第二个活动onCreate()方法上获取它。

第一项活动

 @Override
 public void onClick(View view) {
                Intent i = new Intent(OrderDetails.this, AppointmentSchedulingActivity.class);
                i.putExtra("JobID", jobid);
                i.putExtra("Resultt","1");
                startActivity(i);
            }

关于第二项活动

@Override
public void onCreate(Bundle savedInstanceState)
    {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.second_activity); 

    //extract the intent
     Intent intent = getIntent();
        String id = intent.getStringExtra("JobID");
        String result = intent.getStringExtra("Resultt");
    }

答案 2 :(得分:0)

当您在代码中派生时,在第一个活动中您为startActivityForResult编写了代码,而在第二个活动中,您尝试获取第二个活动操作的结果回调。

首先,我想告诉你一件事,如果你想使用startActivityForResult,那么你的startActivityForResult代码和onActivityResult代码应该在同一个活动中,这意味着你首先要尝试开始第二个活动。 有关详情,请查看:startActivityForResult

第二件事是你试图在第二个活动中的onActivityResult回调中做一些点击事件(比如:continuee.setOnClickListener),我认为这个继续视图与你的第二个活动有关。那么你想在这里实现什么?