BottomSheetDialogFragment setText textView erorr

时间:2018-04-12 13:11:39

标签: java android dialog

对于我的应用我需要显示一个底部动态对话框。我找到了这个解决方案:

public class bottomBar extends BottomSheetDialogFragment {
   public TextView txtLabel;

@SuppressLint("RestrictedApi")
@Override
public void setupDialog(Dialog dialog, int style) {
    super.setupDialog(dialog, style);
    View contentView = View.inflate(getContext(), R.layout.bottom_bar, null);
    dialog.setContentView(contentView);
    txtLabel = contentView.findViewById(R.id.txtLabel);
}

wuith bottom_bar.xml像这样:

<TextView
            android:id="@+id/txtLabel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp" />

从我的MainActivity中调用我的对话框,我尝试以这种方式更改txtLabel文本:

bottomBar bb = new bottomBar();

                bb.txtLabel.setText(String.format("mytext %s %s?" , var1, var2));
                bb.show(getSupportFragmentManager(), bb.getTag());

当我尝试调用setText()时,应用程序崩溃:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null objectbb.txtLabel

你能帮助我吗?

注意:如果我改变顺序,我会得到相同的结果:

bb.show(getSupportFragmentManager(), bb.getTag());
bb.txtLabel.setText(String.format("mytext %s %s?" , var1, var2));

2 个答案:

答案 0 :(得分:0)

您的膨胀布局是bottom_bar.xml。但您的布局名称是layout_bar.xml。检查一下

答案 1 :(得分:0)

创建new bottomBar()时,您的属性public TextView txtLabel;未初始化。你应该首先尝试show()它来初始化这个属性。