0

現在、Gingerbread 2.3.4 を実行している Nexus One で Android ActionBar Sherlock を使用しようとしています。このアクティビティでメニューを作成できる FragmentList を開発しようとしています。メニューは「item1 - item4」で構成されているはずですが、後でメニューをカスタムメイドのリストで構成したいと考えています。

ただし、アプリを実行しようとすると、何らかの理由で強制終了します。

これはレイアウト ファイルです。

<?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="vertical"
android:paddingLeft="0dip"
android:background="@drawable/bg">
<TextView 
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hauptmenü"
android:background="@drawable/custom_bg_title"
android:padding="5dip"
android:gravity="center"
android:textStyle="bold"
android:height="30px"
 />

<fragment class="com.w..TitlesFragment"
        android:id="@+id/titles" android:layout_weight="1"
        android:layout_width="0px"
        android:layout_height="match_parent" />


</LinearLayout>

これはアクティビティのコードファイルです

package com.;

import android.app.ListFragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import android.support.v4.view.Menu;
import android.support.v4.view.MenuItem;
import android.support.v4.view.SubMenu;
import android.support.v4.view.Window;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class wcw_realActivity extends FragmentActivity implements OnItemClickListener {


private static final String[] items ={"item1","item2","item3","item4"};
@Override
public boolean onCreateOptionsMenu(Menu menu) {

    SubMenu subMenu1 = menu.addSubMenu("Action Item");
        subMenu1.add("Sample");
        subMenu1.add("Menu");
        subMenu1.add("Items");

    MenuItem subMenu1Item = subMenu1.getItem();
        subMenu1Item.setIcon(R.drawable.ic_title_share_default);
        subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);          

    return super.onCreateOptionsMenu(menu);
}

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

    requestWindowFeature(Window.FEATURE_ACTION_BAR);        
    setContentView(R.layout.main);                       
}   

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Log.i("FragmentList", "Item clicked: "+ id);
}

public static class TitlesFragment extends ListFragment {
    boolean mDualPane;
    int mCurCheckPosition = 0;

    @Override
    public void onActivityCreated(Bundle savedState) {
        super.onActivityCreated(savedState);

        // Populate list with our static array of titles.
        setListAdapter(new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1,
                items));

        if (savedState != null) {
            // Restore last state for checked position.
            mCurCheckPosition = savedState.getInt("curChoice", 0);
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("curChoice", mCurCheckPosition);
    }

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

}

}

フラグメントを悪い方法で初期化しているのではないかと思います-これはおそらく、アプリが毎回クラッシュすることを説明しています.

アプリから「フラグメント」タグを除外すると、問題なく動作します。

誰かがその特定の問題の解決策を知っていれば、それは素晴らしいことです。

ここにログファイルがあります

4

1 に答える 1

0

ListFragment (またはその他のFragment) は、デフォルトでは Gingerbread では使用できません。Honeycomb に対してコンパイルしている可能性があるため、コンパイルはできますが、実行時にクラッシュします。古いバージョンの Android で Fragments を使用するには、互換性パッケージを使用します。minSdkVersionまた、セットが正しいものであることを確認してください。

ListFragmentすでに互換パッケージを使用している場合、(クラスが見つからないため)正しくインクルードしていない可能性がありますか?

于 2011-08-29T17:45:27.300 に答える