0

これは私の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を使用している最速の時間です。私のコードが実行する、または実行する必要があるのは、文字列のリストを出力することだけです。私は彼らがそれを改善することができます。

私のコードに何か問題がありますか?どこ?

4

3 に答える 3

1

フラグメントはアクティビティに含まれている必要があります(これはXMLまたは動的に実行できます)。マニフェストでは、含まれている可能性のあるフラグメントではなく、アクティビティを指定する必要があります。

于 2012-02-01T12:21:36.813 に答える
1

マニフェスト ファイルのコードが間違っています。フラグメントの代わりにアクティビティが必要です。そのため、その 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>
于 2012-02-01T12:32:53.720 に答える
1

あなたのマニフェストは完全です。

違う:

<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>

または 2 番目の方法として、Strings.xml ファイルに移動し、Activity_name = "Any label for the activity" を追加します。

それだけです。

于 2012-03-31T17:05:45.303 に答える