目前,我正在开发一个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
答案 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);