2012-04-16 2 views
1

Странно; по какой-то причине мне с трудом удается получить подкласс класса GridView. Я получаю Caused by: java.lang.ClassCastException: android.widget.GridView cannot be cast to com.dobydigital.dobixchange.CustomGridView при попытке использовать свой CustomGridView. Вот мой кодПочему я получаю ClassCastException при подклассификации GridView?

CustomGridView.java

import android.widget.GridView; 
public class CustomGridView extends GridView { 

FileBrowserFragment.java

//# Other stuff omitted for brevity 
private CustomGridView gridView; 
public class FileBrowserFragment extends Fragment { 
//# Stuff 
} 
//# ......... 
@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onActivityCreated(savedInstanceState); 
    //# This cast here throws the exception 
    gridView = (CustomGridView) getView().findViewById(R.id.grid_view); 

file_browser.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/root_node" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

<com.dobydigital.dobixchange.CustomGridView 
    android:id="@+id/grid_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:numColumns="3" 
    android:layout_weight="80" > 
    <!-- Preview: [email protected]/image_tile --> 
</com.dobydigital.dobixchange.CustomGridView> 



<Button 
    android:id="@+id/btn_confirm" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:text="Select this Directory" /> 

</LinearLayout> 

Я не могу понять, что происходит. Раньше у меня никогда не было проблем с подклассификацией макетов.

+0

Что 'GetView)' делать (? Кроме того, вы импортируете правильный файл «R»? –

+0

Вам не нужно вводить свой пользовательский GridView в обычный GridView, в этом нет необходимости. Что вы пытаетесь сделать с помощью настраиваемого GridView? –

+0

Мне нужно использовать getView() внутри фрагмента, чтобы получить ссылку на Inflated view (в этом случае это корневой узел LinearLayout). Нет простого «findViewById()» для класса Fragment. –

ответ

0

Из комментариев на вопрос: Вы случайно раздувать & возвращение неправильно макета в onCreateView() :)

+0

Спасибо за помощь =) –

0
gridView = (CustomGridView) findViewById(R.id.grid_view); 

избавиться от GetView()

+0

Я не могу, это внутри фрагмента. –

Смежные вопросы