2013-03-24 2 views
0

Я хочу использовать ActionBarSherlock с моим приложением. Когда я звоню getSupportActionBar(), я получаю NullPointerException; Я уже импортировал библиотеку ActionBarSherlock в свой проект.ActionBar nullpointerException

Вот мой Java класс:

public class ProfileActivity extends SherlockActivity { 


    @Override 
      public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
       com.actionbarsherlock.view.MenuInflater inflater = this.getSupportMenuInflater(); 
       inflater.inflate(R.menu.mainmenu, menu); 
       return true; 
      } 

     public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 

       getWindow().requestFeature(Window.FEATURE_ACTION_BAR); 

       setContentView(R.layout.profile_page); 



       getSupportActionBar().setTitle("Example!"); //nullpointerException 


       } 
     } 

} 

И мой файл манифеста:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.sal" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true"/> 



    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="10" /> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.CAMERA"/> 

    <permission 
     android:name="com.vogella.android.locationapi.maps.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <!-- The following two permissions are not required to use 
    Google Maps Android API v2, but are recommended. --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
     <uses-permission android:name="com.example.sal.permission.MAPS_RECEIVE"/> 
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 




    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     android:name=".FriendPickerApplication"> 



     <activity 
      android:name="com.example.sal.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 


       </activity> 

     <!-- Entry for RegisterActivity.class --> 
     <activity android:name=".RegisterActivity" 
        android:label="Register New Account"></activity> 
     <meta-data android:value="@string/app_id" android:name="com.facebook.sdk.ApplicationId"/> 
     <activity android:label="@string/app_name" android:name="com.facebook.LoginActivity"></activity> 
     <activity android:name=".ProfileActivity" android:label="Profile page"></activity> 

     <meta-data 
       android:name="com.google.android.maps.v2.API_KEY" 
       android:value="AIzaSyDTVRXMTmfe3jZyAlt-87kRgqM8y4TzIto"/> 


     <activity android:name="SaleMapActivity"></activity> 
     <activity android:name="GroupMapActivity"></activity> 
     <activity android:name="DeliverMapActivity"></activity> 
     <activity android:name="PickFriendsActivity"></activity> 
     <activity android:name="TabMainActivity"></activity> 
     <activity android:name="itemSaleActivity"></activity> 
     <activity android:name="FreindsActivity"></activity> 
     <activity android:name="ExitActivity"></activity> 
     <activity android:name="OneTimeDetailesScreen"></activity> 

    </application> 

</manifest> 

Спасибо.

и это мой стиль:

<style name="AppTheme" parent="Theme.Sherlock.Light"> 
     <item name="android:windowActionBar">true</item> 
    </style> 

ADN вот LogCat:

03-24 16:20:24.325: E/AndroidRuntime(1927): Caused by: java.lang.NullPointerException 
03-24 16:20:24.325: E/AndroidRuntime(1927):  at com.example.sal.ProfileActivity.onCreate(ProfileActivity.java:349) 
03-24 16:20:24.325: E/AndroidRuntime(1927):  at android.app.Activity.performCreate(Activity.java:5104) 
03-24 16:20:24.325: E/AndroidRuntime(1927):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
03-24 16:20:24.325: E/AndroidRuntime(1927):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
03-24 16:20:24.325: E/AndroidRuntime(1927):  ... 23 more 
+0

Вам необходимо включить вывод из вашего Logcat с исключением NullPointer. Пожалуйста, опубликуйте это. – Booger

+0

привет, я добавил logcat, и я посмотрел на это сообщение, но он не помогает мне –

+0

. Можете ли вы опубликовать также заголовок класса? –

ответ

1

Распространяется ли ваша тема приложение тему ABS?

Например, как вы определяете:

android:theme="@style/AppTheme" 

Ваш стиль должен быть:

<style name="AppTheme" parent="Theme.Sherlock.Light"> 
    ... 
</style> 

Смотрите также this answer by Jake Wharton himself.

+0

hi, i cahnged my style (я также добавил его в основной поток: , и он снова дает me nullpointerException –

+0

Возможно, вы меняете декорацию окна, чтобы удалить строку заголовка? Удалив строку заголовка, не будет панели действий и, следовательно, она вернет «null». –

+0

, как вы можете видеть из моей деятельности, я не удаляю title bar ... –

1

Я не могу теперь объяснить, почему вы получаете NPE но, пожалуйста, попробуйте это:

Вместо использования

getSupportActionBar().setTitle("Example!"); //nullpointerException 

просто использовать этот

setTitle("Example!"); 
+0

привет, она не решает мою проблему, а также даже не изменила мой заголовок. .as Я написал, что панель действий все еще не показывает для меня .. в actionBar у меня есть только логотип и имя моего приложения ... –

+0

привет, я добавил этот метод, однако он покажет мне ошибку: «Метод setDisplayOptions (int) не определено для типа ProfileActivity " –

Смежные вопросы