Ошибка при использовании AsyncTaskLoader - PullRequest
0 голосов
/ 01 февраля 2012

Это мой FragmentListArraySupport.java

    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, у которых мало документации или примеров. То, что мой код делает или должен сделать, это просто напечатать список строк Я могу их улучшить.

Что-то не так с моим кодом? Где?

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

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

Пожалуйста, ознакомьтесь с примерами: http://developer.android.com/resources/samples/Support4Demos/index.html

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

Я прилагаю простоепример ниже:

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>
1 голос
/ 31 марта 2012

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

Неправильно:

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

Правильно: Давайте предположим, что ваша активность находится в пакете com.test.ActivityName

В вашем манифесте должно быть следующее:

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

Или Для второго способа работы перейдите в файл Strings.xml и добавьте Activity_name = "Любая метка для действия".

Это все.

1 голос
/ 01 февраля 2012

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

...