我尝试在BottomSheetDialogFragment
中获取“行为”,因此我将其设为不可忽略,但是会引发以下错误:
由于:java.lang.NullPointerException:尝试调用虚拟 方法'android.view.ViewGroup $ LayoutParams NULL对象引用上的android.view.View.getLayoutParams()'
您认为这可能是什么?
您有任何想法或教程如何解决此问题。或者可能会教给我BottomSheetDialogFragments
的一些细节。
代码:
public class BottomSheetExcample extends BottomSheetDialogFragment {
private BottomSheetBehavior bottomSheetBehavior;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.bottom_sheet, container, false);
view.findViewById(R.id.txt1);
view.findViewById(R.id.txt2);
bottomSheetBehavior = BottomSheetBehavior.from();
return view;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
View view = View.inflate(getContext(), R.layout.bottom_sheet, null);
TextView txt1 = view.findViewById(R.id.txt1);
TextView txt2 = view.findViewById(R.id.txt2);
dialog.setContentView(view);
bottomSheetBehavior = BottomSheetBehavior.from((View) view.getParent());
return dialog;
}
@Override
public void onStart() {
super.onStart();
bottomSheetBehavior.setHideable(false);
bottomSheetBehavior.setPeekHeight(500, true);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomSheetExcample b = new BottomSheetExcample();
b.show(getSupportFragmentManager(), "bse");
}
答案 0 :(得分:1)
删除onCreateView方法
public class BottomSheetExample extends BottomSheetDialogFragment {
private BottomSheetBehavior bottomSheetBehavior;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
View view = View.inflate(getContext(), R.layout.fragment_cart, null);
dialog.setContentView(view);
bottomSheetBehavior = BottomSheetBehavior.from((View) view.getParent());
return dialog;
}
@Override
public void onStart() {
super.onStart();
bottomSheetBehavior.setHideable(false);
bottomSheetBehavior.setPeekHeight(500);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
}