Java 扩展ListActivity时类强制转换异常
我想知道为什么当我运行我的应用程序并尝试点击Daily Forecast选项时会出现以下日志Java 扩展ListActivity时类强制转换异常,java,android,android-listview,Java,Android,Android Listview,我想知道为什么当我运行我的应用程序并尝试点击Daily Forecast选项时会出现以下日志 Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.ListView 这是我的日常预测活动 package com.dredaydesigns.stormy.ui; import android.app.ListActivity; impor
Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.ListView
这是我的日常预测活动
package com.dredaydesigns.stormy.ui;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import com.dredaydesigns.stormy.R;
import com.dredaydesigns.stormy.adapters.DayAdapter;
import com.dredaydesigns.stormy.weather.Day;
import java.util.Arrays;
public class DailyForecastActivity extends ListActivity {
private Day[] mDays;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daily_forecast);
Intent intent = getIntent();
Parcelable[] parcelables = intent.getParcelableArrayExtra(MainActivity.DAILY_FORECAST);
mDays = Arrays.copyOf(parcelables, parcelables.length, Day[].class);
DayAdapter adapter = new DayAdapter(this, mDays);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String dayOfTheWeek = mDays[position].getDayOfTheWeek();
String conditions = mDays[position].getSummary();
String highTemp = mDays[position].getTemperatureMax() + "";
String message = String.format("On %s the high will be %s and it will be %s", dayOfTheWeek, highTemp, conditions);
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}
编辑:对不起,忘了发布这个!这里是每日活动预测
'package com.dredaydesigns.stormy.ui;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import com.dredaydesigns.stormy.R;
import com.dredaydesigns.stormy.adapters.DayAdapter;
import com.dredaydesigns.stormy.weather.Day;
import java.util.Arrays;
import butterknife.ButterKnife;
public class DailyForecastActivity extends ListActivity {
private Day[] mDays;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daily_forecast);
ButterKnife.inject(this);
Intent intent = getIntent();
Parcelable[] parcelables = intent.getParcelableArrayExtra(MainActivity.DAILY_FORECAST);
mDays = Arrays.copyOf(parcelables, parcelables.length, Day[].class);
DayAdapter adapter = new DayAdapter(this, mDays);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String dayOfTheWeek = mDays[position].getDayOfTheWeek();
String conditions = mDays[position].getSummary();
String highTemp = mDays[position].getTemperatureMax() + "";
String message = String.format("On %s the high will be %s and it will be %s", dayOfTheWeek, highTemp, conditions);
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}
'
是否需要以不同的方式声明ListActivity?将您的
ListView
id设置为@android:id/list
,然后您的onCreate
方法将被禁用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daily_forecast);
Intent intent = getIntent();
Parcelable[] parcelables = intent.getParcelableArrayExtra(MainActivity.DAILY_FORECAST);
mDays = Arrays.copyOf(parcelables, parcelables.length, Day[].class);
DayAdapter adapter = new DayAdapter(this, mDays);
setListAdapter(adapter);
}
您还需要发布您的
活动\每日\预测
。因此,我们至少可以试着看看有什么问题。请看类似的问题和答案:,我看了几个,但仍然无法得到它smhit当前设置为@android:id/list,但我确实尝试并实现了你的onCreate方法,并得到了这个错误,我相信是一样的。java.lang.ClassCastException:android.widget.RelativeLayout无法强制转换为android.widget.ListView ActivityThread.access$800(ActivityThread.java:135)。。。原因:java.lang.ClassCastException:您设置适配器了吗?我不知道这是什么意思:(