在父片段

时间:2016-12-06 11:54:05

标签: android

我有一个标签活动。 它的1个选项卡包含一个包含片段项的listView。 我在这些列表项目上有一个按钮(这是片段),我想要点击它来显示一个弹出窗口。 不幸的是,我可以看到弹出窗口,我认为它是因为列表项的显示太小。 我真的希望在包含列表的活动中看到它。

有什么想法吗?

编辑: 对话框:

公共类CancelRunPupUp扩展DialogFragment {

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(getResources().getString(R.string.cancelRunTitle))
            .setMessage(getResources().getString(R.string.AreYouSure))
            .setPositiveButton(getResources().getString(R.string.yes), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            })
            .setNegativeButton(getResources().getString(R.string.no), new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });

    AlertDialog dialog = builder.create();
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    return dialog;
}

}

调用此对话框的按钮:

在公共类中,RowInHomeTab扩展了Fragment:

@覆盖     public View onCreateView(LayoutInflater inflater,ViewGroup容器,                              Bundle savedInstanceState){

    // Inflate the layout for this fragment

    view = inflater.inflate(R.layout.fragment_row_in_home_tab, container, false);

    ImageButton cancelRun = (ImageButton) view.findViewById(R.id.cancelRunButton);

    cancelRun.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            CancelRunPupUp dialog = new CancelRunPupUp();
            dialog.show(getFragmentManager(), "cancelRunDialog");
        }
    });
    return view;
}

RowInHomeTab是listView中的一个项目,它放在tabActivity中。

2 个答案:

答案 0 :(得分:0)

使用此对话框片段弹出窗口....

                DFragment dFragment = new DFragment();
            // Show DialogFragment
            dFragment.show(fm, "Dialog Fragment");

答案 1 :(得分:0)

可能会有点“超大”,但您可以使用系统警报:

alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

但这需要

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

编辑: 好吧,似乎你已经将类型设置为SYSTEM_ALERT,然后我没有其他想法,但存储了您希望显示Dialog的活动的Context,并在Dialog类中使用此全局var而不是getActivity()。 但这很粘...... 包含列表视图的活动需要:

public static Context main_ctx;
@Override
protected void onCreate(Bundle savedInstanceState) {
    main_ctx = this;
    [...]

你的对话片段:

public Dialog onCreateDialog(Bundle savedInstanceState) {

     AlertDialog.Builder builder = new AlertDialog.Builder([YOUR CLASS NAME].main_ctx);

编辑:

上次尝试

getActivity().runOnUiThread(new Runnable() {
            public void run() {
               CancelRunPupUp dialog = new CancelRunPupUp();
               dialog.show(getFragmentManager(), "cancelRunDialog");  
            }
        });