如何向片段中创建的 activity 添加回调?

How to add a callback to an activity that's created in a fragment?

我有一个带有按钮的片段,它在 clicked/pressed:

时调用以下方法
public void onClick() {
   Intent intent = new Intent(getActivity(), MyNewActivity.class);
   startActivity(intent)
}

但是,我想将在 activity 的 onDestroy 方法中调用的回调方法传递给 MyNewActivity。我需要回调方法来调用片段的 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();
        }
    }
}

第二个Activity:

public class SecondActivity extends Activity {

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

        findViewById(R.id.btn_finish).setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
                setResult(Activity.RESULT_OK);
                finish();
            }
        });
    }
}