2015-07-20 115 views
-1

我想知道爲什麼我在運行我的應用程序時遇到以下logcat並嘗試單擊每日預測選項。類擴展ListActivity時拋出異常

Caused by: java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.ListView 

這裏是我的DAILYFORECASTACTIVITY

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?

+2

您需要發佈你的'activity_daily_forecast'爲好。所以我們至少可以試着看看有什麼不對。 –

+0

請看下面類似的問題和答案:[java.lang.ClassCastException:android.widget.RelativeLayout](http://stackoverflow.com/questions/20210679/java-lang-classcastexception-android-widget-relativelayout), [Android的listview麻煩](http://stackoverflow.com/questions/20547333/android-listview-trouble) –

+0

我看了幾個,仍然不能得到它smh – dreday

回答

0

設置你的ListView ID的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); 
    } 
+0

它目前設置爲@android:id /列表,但我沒有嘗試和實施你的onCreate方法,並得到這個錯誤我相同。 java.lang.ClassCastException:android.widget.RelativeLayout不能轉換到android.widget.ListView ActivityThread.access $ 800(ActivityThread.java:135) ... 造成的:java.lang.ClassCastException: – dreday

+0

有你設置了適配器? –

+0

我不知道這是什麼意思:( – dreday