5

进度条总是返回 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" />

相同布局中的文本视图完美运行,知道吗?

谢谢

4

4 回答 4

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

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

所以你的代码应该是

 mProgress = (ProgressBar) myDialog.findViewById(R.id.ProgressBar);
于 2013-09-06T13:54:05.003 回答
3

你需要改变

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

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

就像您为您的TextView. 由于您 需要通过inflate添加Dialog layoutmyDialog.

于 2013-09-06T13:54:07.197 回答
3

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

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

findViewById()在当前膨胀的布局中查找View具有提供的 ID 的 a。所以你将caldialog的内容设置为dialog。所以使用对话框对象来初始化你的视图。

于 2013-09-06T13:54:15.303 回答
0

您必须检查布局信息,在哪个布局中添加了progressBar,以及从哪里检索ID。试试这个:

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

于 2013-09-06T14:35:15.077 回答