gpt4 book ai didi

android - 如何在 fragment 构造函数中获取父 Activity 引用?

转载 作者:行者123 更新时间:2023-11-29 15:49:44 25 4
gpt4 key购买 nike

我有一个 GameActivity Activity 其中一个方法是:

/** Show "Game is finished" dialog. */
public void showFinishedDlg(int bodyMsgRes) {
GameFinishedDlgFragment.newInstance(bodyMsgRes).show(
this.getFragmentManager(), "finished_dlg");
}

这是方法创建的对话框 fragment :

public class GameFinishedDlgFragment extends DialogFragment {

static GameFinishedDlgFragment newInstance(int bodyMsgRes) {

GameFinishedDlgFragment frag = new GameFinishedDlgFragment();
Bundle bundle = new Bundle();
bundle.putInt("body_msg", bodyMsgRes);
frag.setArguments(bundle);
return frag;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle args = getArguments();
int bodyMsgRes = args.getInt("body_msg");

// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(bodyMsgRes)
.setPositiveButton(R.string.new_game, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// PROBLEM HERE. TODO: Restart GameActivity
this.parentActivity.recreate();
}
});

// Create the AlertDialog object and return it
return builder.create();
}
}

我试图让对话框按钮的 onClick 重新启动 GameActivity,但我不知道如何获取对该 Activity 实例的引用。

如果我尝试:

this.parentActivity.recreate();

编译器告诉我:

Cannot resolve symbol 'parentActivity'

最佳答案

请覆盖 fragment 的 onAttach 方法。传入的 Activity 参数是您的父 Activity 。

fragment 的生命周期方法: http://developer.xamarin.com/guides/android/platform_features/fragments/part_1_-_creating_a_fragment/Images/fragment_lifecycle.png

官方引用: http://developer.android.com/reference/android/app/DialogFragment.html#onAttach(android.app.Activity)

或者在 onAttach 完成后,在你编写代码的任何地方调用 getActivity() !调用它,在 onAttach 之前它给出 NULL

(阅读下面的评论)

关于android - 如何在 fragment 构造函数中获取父 Activity 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30938285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com