(ProgressBar)findViewById(R.id.ProgressBar)返回null

时间:2013-09-06 13:52:30

标签: android progress-bar

进度条始终返回null

 public void calcola(View view) {
     final Dialog myDialog = new Dialog(this);
        myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        myDialog.setContentView(R.layout.calcdialog);
        myDialog.setCancelable(false);

        Typeface typeFace = Typeface.createFromAsset(getAssets(),"font/Flower.ttf");
        mProgress = (ProgressBar) findViewById(R.id.ProgressBar);

        TextView calc = (TextView) myDialog.findViewById(R.id.textView1);
        calc.setTypeface(typeFace);
        myDialog.show(); }

这是我的xml

 <ProgressBar
    android:id="@+id/ProgressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:maxHeight="30dp"
    android:minHeight="30dp" />

同一版面的textview完美无缺,有什么想法吗?

感谢

4 个答案:

答案 0 :(得分:5)

(ProgressBar) findViewById(R.id.ProgressBar) returns null

因为您使用的是findViewById(R.id.ProgressBar); 而不是 myDialog.findViewById(R.id.ProgressBar);

所以你的代码应该

 mProgress = (ProgressBar) myDialog.findViewById(R.id.ProgressBar);

答案 1 :(得分:3)

您需要更改

 mProgress = (ProgressBar) findViewById(R.id.ProgressBar);

 mProgress = (ProgressBar) myDialog.findViewById(R.id.ProgressBar);

正如您为TextView做的那样。由于您inflate Dialog layout需要通过添加myDialog.

来查看

答案 2 :(得分:3)

如果calcdialog.xml中有进度条,请使用对话框对象初始化进度条,如下所示

   mProgress = (ProgressBar) myDialog.findViewById(R.id.ProgressBar);

findViewById()在当前夸大的布局中查找包含所提供ID的View。因此,您将caldialog的内容设置为对话框。因此,使用对话框对象初始化视图。

答案 3 :(得分:0)

您必须检查布局信息,添加progressBar的布局以及撤消ID的位置。 试试这个:

mProgress = (ProgressBar) myDialog.findViewById(R.id.ProgressBar);