为什么当我想显示我的内容时我的对话框不起作用?
Why does my dialog do not work when I want to display my content?
目前,我正在开发 android 工作室应用程序。此应用程序需要在地图上显示一个按钮。如果我按下这个按钮,就会弹出一个关于天气的对话框。问题是,每当我按下它时,就会出现错误。
(我已经知道天气很好,因为我可以在我的地图 activity 中显示它,但不能在从地图 activity
调用的对话框中显示
这是错误:
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
您忘记说明 climaText 的含义。
尝试替换这个:
climaText = (TextView) findViewById(R.id.climaText);
有了这个:
TextView climaText = (TextView) mView.findViewById(R.id.climaText);
如果不起作用,请尝试:
TextView climaText = (TextView) findViewById(R.id.climaText);
您应该从对话框视图中扩充您的 TextView
替换
climaText = (TextView) findViewById(R.id.climaText);
和
climaText = (TextView) mView.findViewById(R.id.climaText);
试试这个:
climaText = (TextView) mView.findViewById(R.id.climaText);
在对话框视图中查找 TextView。
目前,我正在开发 android 工作室应用程序。此应用程序需要在地图上显示一个按钮。如果我按下这个按钮,就会弹出一个关于天气的对话框。问题是,每当我按下它时,就会出现错误。 (我已经知道天气很好,因为我可以在我的地图 activity 中显示它,但不能在从地图 activity
调用的对话框中显示这是错误:
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
您忘记说明 climaText 的含义。
尝试替换这个:
climaText = (TextView) findViewById(R.id.climaText);
有了这个:
TextView climaText = (TextView) mView.findViewById(R.id.climaText);
如果不起作用,请尝试:
TextView climaText = (TextView) findViewById(R.id.climaText);
您应该从对话框视图中扩充您的 TextView
替换
climaText = (TextView) findViewById(R.id.climaText);
和
climaText = (TextView) mView.findViewById(R.id.climaText);
试试这个:
climaText = (TextView) mView.findViewById(R.id.climaText);
在对话框视图中查找 TextView。