Android &引用;尝试对空对象引用调用虚方法;尝试在DialogFragment中获取CardView的LayoutParams时?

Android &引用;尝试对空对象引用调用虚方法;尝试在DialogFragment中获取CardView的LayoutParams时?,android,android-fragments,nullpointerexception,android-layoutparams,Android,Android Fragments,Nullpointerexception,Android Layoutparams,我试图设置对话框片段内部的卡片视图的大小,但出现以下错误: java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.ViewGroup$LayoutParams android.support.v7.widget.CardView.getLayoutParams()” 这是我的代码: CardView cardView; onCreate(...){ cardView = (C

我试图设置
对话框片段
内部的
卡片视图
的大小,但出现以下错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.ViewGroup$LayoutParams android.support.v7.widget.CardView.getLayoutParams()”

这是我的代码:

        CardView cardView;
        onCreate(...){
            cardView = (CardView) findViewById(R.id.cardViewInDialogFragment);
        }

        private void openDialogFragment() {

            DisplayMetrics displayMetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

            BlankFragment blankFragment = new BlankFragment();
            blankFragment.show(getSupportFragmentManager(),"blankFragment");

            CardView.LayoutParams layoutParams = (CardView.LayoutParams) cardView.getLayoutParams();
            layoutParams.height = displayMetrics.heightPixels - 20;
            layoutParams.width = displayMetrics.widthPixels - 20;
            cardView.setLayoutParams(layoutParams);
        }
这是不可能的还是我做错了什么

更新: cardView位于片段内部

更新2:

将代码更改为以下代码时:

空白片段:

public static View view;
pulic void onCreateView(...) {

    view = inflater.inflate(R.layout.fragment_blank, container, false);
    return view;
}
主要活动:

CardView cardView;
protected void onCreate(...){
    ...

    cardView = (CardView) BlankFragment.view.findViewById(R.id.cardViewInDialogFragment);
    openDialogFragment();
}

private void openDialogFragment() {

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

    BlankFragment blankFragment = new BlankFragment();
    blankFragment.show(getSupportFragmentManager(),"blankFragment");

    CardView.LayoutParams layoutParams = (CardView.LayoutParams) cardView.getLayoutParams();
    layoutParams.height = displayMetrics.heightPixels - 20;
    layoutParams.width = displayMetrics.widthPixels - 20;
    cardView.setLayoutParams(layoutParams);
}
,我得到这个错误:

致命异常:主 进程:com.sim.buttonBarnavigationAndFragment,PID:10685 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.sim.buttombarnavigationandfragment/com.sim.buttombarnavigationandfragment.MainActivity}: java.lang.NullPointerException:尝试调用虚拟方法 空值上的“android.view.view android.view.view.findViewById(int)” 对象引用 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2680) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2741) 位于android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:154) 位于android.app.ActivityThread.main(ActivityThread.java:6176) 位于java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778) 原因:java.lang.NullPointerException:尝试调用虚拟机 方法“android.view.view android.view.view.findViewById(int)”在 空对象引用 在 com.sim.buttonBarnavigationAndFragment.MainActivity.onCreate(MainActivity.java:56) 位于android.app.Activity.performCreate(Activity.java:6679) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2741) 位于android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:154) 位于android.app.ActivityThread.main(ActivityThread.java:6176) 位于java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)


}

cardView实例为空。您确定id CardViewIndialofFragment在您的布局中是正确的id吗?CardView是活动布局或片段布局的一部分?
findViewById
在方法之外,而它不会在方法之外work@Alex这是正确的id。CardView在片段内。不能使视图为静态。您需要在片段中分配CardView
BlankFragment.view
在编辑器中仍然为空。我创建了一个
公共静态视图在片段类中,并在
onCreateView
编辑后返回此:
返回视图=充气机.inflate(R.layout.fragment\u blank,container,false),并尝试访问v
public CardView view;
public View onCreateView(...) {

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

cardView = (CardView) 
view.findViewById(R.id.cardViewInDialogFragment);  
openDialogFragment();
return view;