当我想显示我的内容时,为什么我的对话框不起作用?

时间:2017-10-04 15:42:56

标签: android dialog weather

目前,我正在开发一个Android工作室应用程序。此应用需要显示按钮所在的地图。如果我按下此按钮,则会弹出一个包含天气的对话框。问题是每当我按下它时都会出现错误。 (我已经知道天气有效,因为我可以在我的地图活动中显示它,但不能在地图活动调用的对话框中显示

这是错误:

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

这是我按钮的代码:

 public void startDialogClima(View view) {
        AlertDialog.Builder mBuilder = new AlertDialog.Builder(MapsActivity.this);
        View mView = getLayoutInflater().inflate(R.layout.dialog_playas, null);
        mBuilder.setView(mView);

        climaText = (TextView) findViewById(R.id.climaText);
        downloadTask.placeIdTask asyncTask = new downloadTask.placeIdTask(new downloadTask.AsyncResponse() {
            public void processFinish(String weather_city, String weather_description, String weather_temperature, String weather_humidity, String weather_pressure, String weather_updatedOn, String weather_iconText, String sun_rise) {


                climaText.setText(weather_temperature);
                //desc.setText(weather_description);
                //weatherIcon.setText(Html.fromHtml(weather_iconText));

            }
        });
        asyncTask.execute("-34.83", "-56.17"); //  asyncTask.execute("Latitude", "Longitude")

        AlertDialog dialog = mBuilder.create();
        dialog.show();
    }

对话框的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:id="@+id/climaText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_marginTop="20dp"
        android:layout_marginStart="120dp"
        />
</LinearLayout

3 个答案:

答案 0 :(得分:2)

试试这个:

climaText = (TextView) mView.findViewById(R.id.climaText);

在对话框视图中查找TextView。

答案 1 :(得分:1)

您忘了说明climaText的含义。

尝试替换它:

climaText = (TextView) findViewById(R.id.climaText);

用这个:

TextView climaText = (TextView) mView.findViewById(R.id.climaText);

如果它没有工作,请尝试:

  TextView climaText = (TextView) findViewById(R.id.climaText);

答案 2 :(得分:1)

您应该从对话框视图中扩充TextView

replce

climaText = (TextView) findViewById(R.id.climaText);

climaText = (TextView) mView.findViewById(R.id.climaText);