我目前正在尝试在运行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);
}
}
}
我怀疑我是以一种糟糕的方式初始化片段 - 这可能解释了应用程序每次都崩溃。
当我从我的应用中排除“片段”标签时,它可以正常工作。
如果有人知道针对该特定问题的解决方案,那就太棒了。
这是日志文件
答案 0 :(得分:0)
ListFragment(或任何其他Fragment
)在Gingerbread中不可用。您可能正在编译对抗Honeycomb,这就是它编译但运行时崩溃的原因。使用compatibility package在旧版Android中使用Fragments。另外,请确保将minSdkVersion
设置为正确的。
如果您已经在使用兼容包,可能没有正确包含它(因为找不到ListFragment
类)?