Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何向在片段中创建的活动添加回调?_Android_Android Intent_Android Fragments_Android Activity - Fatal编程技术网

Android 如何向在片段中创建的活动添加回调?

Android 如何向在片段中创建的活动添加回调?,android,android-intent,android-fragments,android-activity,Android,Android Intent,Android Fragments,Android Activity,我有一个片段,其中有一个按钮,单击/按下该按钮时调用以下方法: public void onClick() { Intent intent = new Intent(getActivity(), MyNewActivity.class); startActivity(intent) } 但是,我想向MyNewActivity传递一个回调方法,该方法在activity的onDestroy方法中调用。我需要回调方法来调用片段的finish方法 我尝试过使用静态变量,但效果不错,但这似乎

我有一个片段,其中有一个按钮,单击/按下该按钮时调用以下方法:

public void onClick() {
   Intent intent = new Intent(getActivity(), MyNewActivity.class);
   startActivity(intent)
}
但是,我想向MyNewActivity传递一个回调方法,该方法在activity的onDestroy方法中调用。我需要回调方法来调用片段的finish方法

我尝试过使用静态变量,但效果不错,但这似乎是一个糟糕的设计。最好的方法是什么?如果不是通过回调方法,有什么更好的方法?

使用评论中建议的startActivityForResult

使用以下代码:

片段:

public class MyFragment extends Fragment {

    private static final int REQUEST_CODE = 1353;

    @Override public View onCreateView(LayoutInflater inflater,
                                       @Nullable ViewGroup container,
                                       @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment, container, false);
        v.findViewById(R.id.btn_start).setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
                Intent intent = new Intent(getActivity(), SecondActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
        return v;
    }

    @Override public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE) {
            Toast.makeText(getActivity(), "Hooray! Fragment got result from activity!", Toast.LENGTH_SHORT).show();
        }
    }
}
第二项活动:

公共类SecondActivity扩展了活动{ @重写受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.second_活动; findViewByIdR.id.btn_finish.setOnClickListener新视图。OnClickListener{ @在单击视图v时覆盖公共void{ setResultActivity.RESULT\u正常; 完成 } }; } } 出于您的目的,请尝试startActivityForResult,而不是此回调机制。