【问题标题】:How to access in onActivityResult() method between two fragments in android?如何在android中两个片段之间的onActivityResult()方法中访问?
【发布时间】:2013-10-28 06:09:48
【问题描述】:

我在两个片段之间制作演示应用程序 FragmentActivity,例如一个是普通扩展片段,第二个是扩展 DialogFragment。

我不会在第一个片段中处理 onActivityResult() 方法,因为第一个片段打开对话框片段确定按下然后访问该方法。

请帮助我 感谢您的进步

第一个片段代码,

public class MyListFragment extends Fragment {

    View mView;
    protected static final int REQ_CODE = 1010;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        mView = inflater.inflate(R.layout.list_fragment, container, false);
        return view;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            if (requestCode == REQ_CODE) {
                // Access here
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}

【问题讨论】:

    标签: android android-fragments android-fragmentactivity android-dialogfragment


    【解决方案1】:

    我找到了答案MYSELF

    这就是我处理片段和对话片段之间通信的方式,

    MyListFragment 代码,

    public class MyListFragment extends Fragment {
    
        View mView;
        protected static final int REQ_CODE = 1010;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            mView = inflater.inflate(R.layout.list_fragment, container, false);
    
            Button mButton = (Button) mView.findViewById(R.id.button);
            mButton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    MyDialogFragment dialog = new MyDialogFragment();
                    dialog.setTargetFragment(MyListFragment.this, REQ_CODE);
                    dialog.show(getFragmentManager(), "dialog");
                }
            });
    
            return view;
        }
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (resultCode == Activity.RESULT_OK) {
                if (requestCode == REQ_CODE) {
                    // Access here
                    Log.i(TAG, "onActivityResult Access here method");
                }
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
    

    DialogFragment代码,

    public class MyDialogFragment extends DialogFragment {
    
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
    
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setMessage("My dialog message")
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    notifyToTarget(Activity.RESULT_OK);
                }
            })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    notifyToTarget(Activity.RESULT_CANCELED);
                }
            });
            return builder.create();
        }
    
        private void notifyToTarget(int code) {
            Fragment targetFragment = getTargetFragment();
            if (targetFragment != null) {
                targetFragment.onActivityResult(getTargetRequestCode(), code, null);
            }
        }
    }
    

    此代码希望对我们有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多