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,而不是此回调机制。