setSupportActionBar () lancia l'exception Nullpointer

Sono nuovo a android e stavo seguendo il seguente tutorial per Material Design Toolbar:

http://www.android4devs.com/2014/12/how-to-make-material-design-app.html 

Ma dopo l'implementazione del codice. il seguente errore è stato mostrato in logcat:

  • Android - Comprensione di View.getLocalVisibleRect (Rect)
  • straordinarie eccezioni in android 4.0 con eclipse
  • Come utilizzare lvl ServerManagedPolicy?
  • Come get un'image a forma di captcha con Jsoup?
  • ProgressDialog è deprecata
  • Impostazioni WebView ottimali per il supporto HTML5?
  •  04-01 19:16:10.214 2246-2253/com.example.bhaskar.ddit_results E/art﹕ Failed sending reply to debugger: Broken pipe 04-01 19:16:11.985 2246-2246/com.example.bhaskar.ddit_results E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.bhaskar.ddit_results, PID: 2246 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bhaskar.ddit_results/com.example.bhaskar.ddit_results.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:95) at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:88) at android.support.v7.internal.app.ToolbarActionBar.<init>(ToolbarActionBar.java:84) at android.support.v7.app.ActionBarActivityDelegateBase.setSupportActionBar(ActionBarActivityDelegateBase.java:175) at android.support.v7.app.ActionBarActivity.setSupportActionBar(ActionBarActivity.java:92) at com.example.bhaskar.ddit_results.MainActivity.onCreate(MainActivity.java:41) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

    che è causato da NullPointerException. Sto utilizzando Android Studio 1.0.1.

    styles.xml:

     <resources> <!-- Base application theme. --> <style name="MyTheme" parent="MyTheme.Base"> </style> <style name="MyTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">#ff32cd32</item> <item name="colorPrimaryDark">#ff04cd2c</item> <item name="colorAccent">#ff4081</item> </style> 

    V21 / styles.xml:

     <resources> <style name="MyTheme" parent="MyTheme.Base"> <item name="android:windowContentTransitions">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> <item name="android:windowSharedElementExitTransition">@android:transition/move</item> 

    In toolbar.xml ho:

     <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:elevation="4dp"/> 

    ho anche incluso il layout della barra degli strumenti in file activity_main.xml. In MainActivity.java:

     public class MainActivity extends ActionBarActivity { .... private Toolbar toolbar; public static final int RECORD_ENTRY_REQUEST_CODE=3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set our view from the "main" layout resource toolbar = (Toolbar)findViewById(R.id.toolbar); //Toolbar will now take on default actionbar characteristics setContentView(R.layout.activity_main); setSupportActionBar(toolbar); setTitle("DDIT_Results"); .... } 

    Ho cercato questo problema e non ho trovato soluzioni. Spero che qualcuno riconosca questo errore e che abbia una risposta rapida per esso – altrimenti posso fornire ulteriori informazioni se richiesto. Un aiuto potrebbe essere appriciated.

    3 Solutions collect form web for “setSupportActionBar () lancia l'exception Nullpointer”

    Devi call setContentView prima di aggiungere qualsiasi View , ad esempio la Toolbar degli Toolbar .

     protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // <-- call this first toolbar = (Toolbar)findViewById(R.id.toolbar); // <-- setup views after setSupportActionBar(toolbar); setTitle("DDIT_Results"); } 

    Guarda il blog ufficiale degli sviluppatori Android qui: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

    Barra dell'azione

    Per utilizzare la barra degli strumenti come barra d'azione, disabilitare la barra d'azione fornita di decorazione. Il modo più semplice è quello di estendere il tuo tema da Theme.AppCompat.NoActionBar (o la sua variante leggera).

    In secondo luogo, creare un'istanza della barra degli strumenti, di solito tramite il layout XML:

     <android.support.v7.widget.Toolbar android:id=”@+id/my_awesome_toolbar” android:layout_height=”wrap_content” android:layout_width=”match_parent” android:minHeight=”?attr/actionBarSize” android:background=”?attr/colorPrimary” /> 

    L'altezza, la width, lo background e così via sono totalmente a voi; questi sono solo buoni esempi. Poiché la barra degli strumenti è solo un ViewGroup, è ansible definire lo stile e la posizione comunque.

    Quindi nella tua attività o frammento, impostare la barra degli strumenti per agire come la barra delle azioni:

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.blah); Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); } 

    Da questo punto in poi, tutte le voci di menu vengono visualizzate nella barra degli strumenti, popolate tramite le richieste callback del menu delle opzioni standard.

    Prima di aggiungere la barra degli strumenti è necessario rimuovere l'azione dal tuo stile come

      <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowActionBar">false</item> <item name="android:windowNoTitle">true</item> </style> 

    Ora definisci la barra degli strumenti in res / xml / toolbar.xml

     <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/appbar" android:theme="@style/AppTheme" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" /> 

    Includi ora questa barra degli strumenti nel nostro layout di attività come xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <include android:id="@+id/tool_bar" layout="@xml/toolbar" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout> 

    Nota: Ora, mentre definiamo la barra degli strumenti in attività, useremo "toolbar" come ID non id "appbar"

     import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar actionbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(actionbar); } } 

    Ora puoi vedere nella barra degli strumenti attività

    Assicurati di aggiungere il tema nell'attività all'interno dei manifesti

      <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

    quindi definire questi attributi al tema utilizzato in precedenza nello stile.xml

      <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> 

    sol

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.