ActionBarSherlock在Android应用程序中返回空值

时间:2011-11-02 11:42:56

标签: android android-actionbar greendroid actionbarsherlock

这是我的问题:

我一直试图在我的Android 2.3应用程序中获得一个ActionBar。我决定使用ActionBarSherlock。我通过导入ZIP然后使其成为库来创建一个新项目。

我将它作为库添加到我当前的项目中。

然后,除非我删除兼容性库(转换为Dalvik格式失败,错误1),否则它将无效

所以我删除它,编译时没有更多错误。但是当我尝试使用它时,它总是返回null。我不确定我是否遗漏了一些小东西或什么东西,但这已经让我疯了一段时间了。任何建议将不胜感激。以下是一些代码片段:

清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.StuMan"
  android:versionCode="1"
  android:versionName="1.0"
  android:theme="@style/Theme.Sherlock">
<uses-sdk android:minSdkVersion="4"
          android:targetSdkVersion="13" />

然后我在我的活动中发出的电话:

import java.util.ArrayList;
import com.StuMan.R;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.Window;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.Toast;

public class WelcomeGrid extends FragmentActivity{

private ArrayList<String> parts = new ArrayList<String>();
final String [] items=new String[]{"Classes", "Calendar", "To-Do List"};

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.welcome_grid);
    requestWindowFeature(Window.FEATURE_ACTION_BAR_ITEM_TEXT);

    Toast.makeText(getApplicationContext(), String.valueOf(getSupportActionBar().isShowing()), Toast.LENGTH_LONG);

    GridView gv = (GridView)findViewById(R.id.gv_welcome);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);

    gv.setAdapter(adapter);

}

}

1 个答案:

答案 0 :(得分:2)

您不需要包含支持包,因为ActionBarSherlock包含支持包(并对其进行了增强)。如果您检查ActionBarSherlock源,您将看到android.support.v4.*类。

我得到getSupportActionBar()重新调整null,直到我重新阅读usage instructions,特别是关于父主题。

  

为了让操作栏在3.0之前的设备上运行,您的   活动必须使用Theme.Sherlock或Theme.Sherlock.Light,或者你的   自定义主题必须使用上述两个中的一个作为其父级。

包含在申请元素

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" 
        android:theme="@style/Theme.Sherlock">