ClassCastException в подклассе ListFragment с использованием библиотеки совместимости

Это происходит только при использовании библиотеки совместимости для устройств до версии 3.0

Я получаю сообщение об ошибке, которое не могу определить. У меня есть Activity с ListFragment и стандартным фрагментом. Он аналогичен примеру, приведенному в разделе для разработчиков руководства Android Dev.

Подкласс ListFragment (без переопределения функций)

public class ItemListFragment extends ListFragment

MainActivity

public class ItemViewerActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.item_viewer);
    }
}

XML-макет для MainActivity

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="horizontal">
  <fragment class="org.example.ItemListFragment"
    android:id="@+id/item_list_fragment"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="1" />
  <FrameLayout
    android:id="@+id/item_info_frame"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="1" />
</LinearLayout>

Сообщение об ошибке от LogCat

ERROR / AndroidRuntime: вызвано: java.lang. #include #include pthread_t pid1, pid2; void * test (void * arg) { void ** ...

Я написал следующий код с использованием библиотеки pthread POSIX:

#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>

pthread_t pid1,pid2;

void *test(void *arg)
{
void **end;
printf("\nNew Thread ID: 0x%x\n",(unsigned int)pid2);
pthread_join(pid1,end);
printf("\nNew Thread going to go off\n");
printf("\nNew Thread ID: 0x%x\n",(unsigned int)pid2);
return ((void *)NULL);
}    

int main()
{
pid1 = pthread_self();
pthread_create(&pid2,NULL,test,NULL);
printf("\nMain Thread ID: 0x%x\n",(unsigned int)pid1);
sleep(2);
printf("\nI am going off\n");
pthread_exit(0);
}

При выполнении кода я получил следующий результат:

Main Thread ID: 0xb7880b30
New Thread ID: 0xb787eb70
I am going off
Segmentation fault

Как я изучал, поток (pid2), вызывающий pthread_join, будет блокировать, пока поток, переданный в аргументе (pid1), не вызовет pthread_exit (). А pthread_exit () используется для остановки выполнения определенного потока, позволяя всем остальным продолжать выполнение.

Я хочу знать, почему я наконец получил ошибку сегментации.

Пожалуйста, объясните мне как следует.

6
задан Adrian Carneiro 3 May 2011 в 20:09
поделиться