如何通过片段中的ID在活动中查找视图

时间:2019-05-21 01:37:44

标签: java android android-fragments android-activity

我对活动有一个imageview,该onview具有onclick来显示对话框以寻求帮助,对话框的内容取决于片段的内容。问题是我想在特定的片段后隐藏帮助imageview,但是我找不到片段内部的viewviewbyID到setVisibility的imageview,因为它返回空对象引用。

我为对话框的内容创建了一个公共的静态字符串,以便从片段内部进行更改。

MainActivity.java

ivHelp = findViewById(R.id.ivHelp);

private void showDialog(String title, String message){
    if(title.equals("hide")){
        ivHelp.setVisibility(View.INVISIBLE);
    }
    else {
        Dialog dialog = new Dialog(MainActivity.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        Window window = dialog.getWindow();
        window.setBackgroundDrawableResource(android.R.color.transparent);
        dialog.setContentView(R.layout.dialog_help);
        ImageView btnClose = (ImageView) dialog.findViewById(R.id.dialog_close);
        TextView tvTitle = (TextView) dialog.findViewById(R.id.dialog_title);
        TextView tvMessage = (TextView) dialog.findViewById(R.id.dialog_message);

        tvTitle.setText(title);
        tvMessage.setText(message);

        btnClose.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        dialog.show();
    }
}

片段

fragmentview = inflater.inflate(R.layout.fragment_enter_car_details, container, false);

ivHelp = fragmentview.findViewById(R.id.ivHelp);
btnBook = fragmentview.findViewById(R.id.btnEnterCarDetails_Book);
btnBook.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ivHelp.performClick();
            MainActivity.dialogTitle="hide";
            FragmentTransaction ft =getActivity().getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.content_frame, new FindingWasherFragment());
            ft.commit();
        }
    });

return fragmentview;

This is the activity

This is the fragment

imageview是活动上的问号

1 个答案:

答案 0 :(得分:1)

我用这个解决了

ivHelp = ((MainActivity)getContext()).findViewById(R.id.ivHelp);

然后

ivHelp.setVisibility(View.INVISIBLE);

工作