【发布时间】:2021-10-07 20:19:45
【问题描述】:
我正在单击按钮时创建一个弹出窗口。但是,我在 getSupportFragmentManager() 上遇到错误;
public class PrizeList extends AppCompatDialogFragment {
TextView players, prizePoolList, perKill, rank1, rank2, rank3;
SeekBar seekBar;
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.prize_list_layout, null);
builder.setView(view).setTitle("Prize List")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
players = view.findViewById(R.id.players);
prizePoolList = view.findViewById(R.id.prizePoolList);
perKill = view.findViewById(R.id.perKill);
rank1 = view.findViewById(R.id.rank1);
rank2 = view.findViewById(R.id.rank2);
rank3 = view.findViewById(R.id.rank3);
seekBar = view.findViewById(R.id.seekBar);
return builder.create();
}
}
适配器
holder.prizeList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDialog();
Toast.makeText(v.getContext(), "prize list clicked", Toast.LENGTH_SHORT).show();
}
});
}
private void openDialog() {
PrizeList prizeList = new PrizeList();
prizeList.show(prizeList.requireActivity().getSupportFragmentManager(), "Prize");
}
我遇到的错误,
E/AndroidRuntime: 致命异常: main 进程:com.luteraa.luteraaesports,PID:6355 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'androidx.fragment.app.FragmentManager androidx.fragment.app.FragmentActivity.getSupportFragmentManager()' 在 com.luteraa.luteraaesports.BGMICategoryAdapter.openDialog(BGMICategoryAdapter.java:93) 在 com.luteraa.luteraaesports.BGMICategoryAdapter.access$000(BGMICategoryAdapter.java:25) 在 com.luteraa.luteraaesports.BGMICategoryAdapter$1.onClick(BGMICategoryAdapter.java:76) 在 android.view.View.performClick(View.java:7191) 在 com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 在 android.view.View.performClickInternal(View.java:7164) 在 android.view.View.access$3500(View.java:821) 在 android.view.View$PerformClick.run(View.java:27856) 在 android.os.Handler.handleCallback(Handler.java:914) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:224) 在 android.app.ActivityThread.main(ActivityThread.java:7551) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
【问题讨论】:
-
您的
prizeList对话框根本没有绑定到任何Activity,因此在没有父活动的片段上调用geActivity()将返回null。 -
那么请告诉我解决方案
标签: java android android-studio