4

APIレベル8〜16で実行されることになっているプロジェクトの基本構造を設定しようとしていますが、Googleの位置情報サービスとActionBarSherlockを使用しています。

セットアップについては、他の質問を参照してください。

Eclipse(Master-Detail-Flow)を使用して簡単なアクティビティを生成しました。私のプロジェクトには現在、1つのアクティビティと1つのフラグメントしかありません。これまでに行ったのは、スーパークラスを対応するABSクラスに置き換えることだけです。

public class CouponListActivity extends SherlockFragmentActivity implements CouponListFragment.Callbacks {
...
}

public class CouponListFragment extends SherlockListFragment {
...
}

これは私が使用している唯一のレイアウト要素です

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:name="....activity.CouponListFragment"
    android:id="@+id/coupon_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    tools:context=".CouponListActivity" />

これは、API 16のエミュレーターでは正常に実行されますが、API8の別のエミュレーターでは失敗します

問題は、スタックトレースを有用な方法で解釈できないことです。私のコードはまったく触れられていないようです...

java.lang.NullPointerException
    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
    at android.widget.AbsListView.obtainView(AbsListView.java:1315)
    at android.widget.ListView.makeAndAddView(ListView.java:1727)
    at android.widget.ListView.fillDown(ListView.java:652)
    at android.widget.ListView.fillFromTop(ListView.java:709)
    at android.widget.ListView.layoutChildren(ListView.java:1580)
    at android.widget.AbsListView.onLayout(AbsListView.java:1147)
    at android.view.View.layout(View.java:7035)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at android.view.View.layout(View.java:7035)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at android.view.View.layout(View.java:7035)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at android.view.View.layout(View.java:7035)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at android.view.View.layout(View.java:7035)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
    at android.view.View.layout(View.java:7035)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at android.view.View.layout(View.java:7035)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
    at android.view.View.layout(View.java:7035)
    at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4627)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

どこで問題を探し始めることができますか?さらに情報を提供できるかどうか教えてください。

更新:ABSを除外し、API8で実行されるList-Activity/ -Fragmentの組み合わせを作成しようとすると、まったく同じスタックトレースが得られます。これがプロジェクトです。

4

1 に答える 1

3

ソースコードを確認した後、simple_list_item_activated_1リソースを使用しています。これはAndroidAPIレベル11の新機能であるため、問題の解決策はです。

onCreateメソッドは次のようになります

@Override
 public void onCreate(final Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(), android.R.layout.simple_list_item_activated_1,android.R.id.text1, DummyContent.ITEMS));
 }

これはAPIレベル11の新機能であるため、ActionBarSherlockの有無にかかわらず同じエラーが発生します。使用する場合はsimple_list_item_activated_1、そのローカルコピーを作成する必要があります。遅刻してすみません

于 2012-07-30T11:19:41.563 に答える