2012-02-01 3 views
0

Это мой FragmentListArraySupport.javaОшибка при использовании AsyncTaskLoader

package com.test.methods; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.ListFragment; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class FragmentListArraySupport extends FragmentActivity { 

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Create the list fragment and add it as our sole content. 
    if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) { 
     final ArrayListFragment list = new ArrayListFragment(); 
     getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit(); 
    } 
} 

public static class ArrayListFragment extends ListFragment { 

    @Override 
    public void onActivityCreated(final Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, Shakespeare.TITLES)); 
    } 

    @Override 
    public void onListItemClick(final ListView l, final View v, final int position, final long id) { 
     Log.i("FragmentList", "Item clicked: " + id); 
    } 
} 
} 

Это мой погрузчик:

package com.test.methods; 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

import android.content.Context; 
import android.content.pm.ApplicationInfo; 
import android.content.pm.PackageManager; 
import android.support.v4.content.AsyncTaskLoader; 

public class AsyncLoader extends AsyncTaskLoader<String[]> { 

    public AsyncLoader(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 


    } 

    @Override 
    public String[] loadInBackground() { 
     // TODO Auto-generated method stub 
     String[] S = {"hello","hi","bye"}; 
     return S; 
    } 


} 

Мой манифест это:

<activity android:name=".app.FragmentListArraySupport" 
     android:label="@string/fragment_list_array_support"> 
</activity> 

Ошибка:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.crumbin.main/com.test.methods.FragmentListArraySupport}; have you declared this activity in your AndroidManifest.xml? 

Какая ошибка?

Это быстрое время, когда я имею дело с фрагментами, а также с помощью AsyncTaskLoaders, у которого нет много документации или примеров. То, что мой код делает или должен делать, это просто распечатать список строк. Я могу их улучшить.

С кодом нет в коде? Где?

ответ

1

Ваш манифест полностью.

Wrong:

<activity android:name=".app.FragmentListArraySupport" 
     android:label="@string/fragment_list_array_support"> 
</activity> 

Correct: Let us assume that your activity is in the package com.test.ActivityName

Ваш манифест должен это включить активность:

<activity android:name="com.test.ActivityName" android:label="Activity Name" > </activity> 

Или Для второй способ работы, перейдите к файлу strings.xml и добавить ACTIVITY_NAME = «Любой ярлык для активности».

Это все.

1

Фрагмент должен содержаться в действии (вы можете сделать это в XML или динамически). В манифесте вы должны указать действия, а не фрагменты, которые могут содержаться.

1

Ваш код в файле манифеста неверен. Вместо фрагмента должна существовать активность. Вот почему вы получаете исключение CAST.

Пожалуйста, проверьте образцы: http://developer.android.com/resources/samples/Support4Demos/index.html

Вы можете загрузить их с помощью диспетчера Android SDK.

Я придаю простой пример ниже:

public class FragmentListArraySupport extends FragmentActivity { 

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Create the list fragment and add it as our sole content. 
    if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) { 
     final ArrayListFragment list = new ArrayListFragment(); 
     getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit(); 
    } 
} 

public static class ArrayListFragment extends ListFragment { 

    @Override 
    public void onActivityCreated(final Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, Shakespeare.TITLES)); 
    } 

    @Override 
    public void onListItemClick(final ListView l, final View v, final int position, final long id) { 
     Log.i("FragmentList", "Item clicked: " + id); 
    } 
} 
} 

и в вас файл манифеста:

<activity android:name=".app.FragmentListArraySupport" 
      android:label="@string/fragment_list_array_support"> 
    </activity> 
+0

Получение ошибки в манифесте: ресурс не найден, который соответствует указанному имени. – Hick

+0

Пожалуйста, не используйте copy/paste. «Android: name» должно быть названием вашей деятельности. «Андроид: метка» не требуется, но это может быть простая строка. – Blehi

+0

Я этого не сделал. Я сделал необходимые изменения. Ошибка указана на метке, а не на имени. – Hick

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