2016-02-10 9 views
1

Я сделал операцию и хочу ввести мою панель инструментов с помощью Roboguice, но я получаю исключение Nullpointer. Попробовали некоторые решения, но они не работают. Вот мой прогресс.Android RoboGuice 3.0 nullpointer на панели инструментов

MainActivity.java

@ContentView(R.layout.activity_main) 
public class MainActivity extends RoboActionBarActivity { 
    @InjectView(R.id.tool_bar) 
    Toolbar toolbar; 

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

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<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=".activities.MainActivity"> 

    <include 
     android:id="@+id/tool_bar" 
     layout="@layout/tool_bar" /> 
    <FrameLayout 
     android:layout_below="@+id/tool_bar" 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".activities.MainActivity" 
     tools:ignore="MergeRootFrame" /> 
</RelativeLayout> 

manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     package="com.android.app"> 
     <application 
      android:name=".application.CustomApplication" 
      android:allowBackup="true" 
      android:icon="@mipmap/ic_launcher" 
      android:label="@string/app_name" 
      android:supportsRtl="true" 
      android:theme="@style/AppTheme" 
      tools:replace="android:icon"> 
      <meta-data 
       android:name="roboguice.annotations.packages" 
       android:value="roboguice,databasename" /> 
      <activity android:name=".activities.MainActivity"> 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 
     </application> 
    </manifest> 

CustomApplication.java

public class CustomApplication extends Application { 
    public void onCreate() { 
     super.onCreate(); 
     RoboGuice.setUseAnnotationDatabases(false); 
    } 
} 

Module.gradle

compile 'org.roboguice:roboguice:3.+' 
provided 'org.roboguice:roboblender:3.+' 

App.gradle

allprojects { 
    gradle.projectsEvaluated { 
     tasks.withType(JavaCompile) { 
      options.compilerArgs << "-AguiceAnnotationDatabasePackageName=databasename" 
     } 
    } 
    repositories { 
     jcenter() 
    } 
} 

Бревна с ошибкой

FATAL EXCEPTION: main 
                    Process: com.android.jammboree, PID: 4817 
                    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.app/com.android.app.activities.MainActivity}: java.lang.NullPointerException 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                     at android.os.Looper.loop(Looper.java:136) 
                     at android.app.ActivityThread.main(ActivityThread.java:5001) 
                     at java.lang.reflect.Method.invokeNative(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:515) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                     at dalvik.system.NativeStart.main(Native Method) 
                     Caused by: java.lang.NullPointerException 
                     at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:98) 
                     at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:91) 
                     at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:73) 
                     at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:205) 
                     at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:99) 
                     at com.android.jammboree.activities.MainActivity.onCreate(MainActivity.java:24) 
                     at android.app.Activity.performCreate(Activity.java:5231) 
                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)  
                     at android.app.ActivityThread.access$800(ActivityThread.java:135)  
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  
                     at android.os.Handler.dispatchMessage(Handler.java:102)  
                     at android.os.Looper.loop(Looper.java:136)  
                     at android.app.ActivityThread.main(ActivityThread.java:5001)  
                     at java.lang.reflect.Method.invokeNative(Native Method)  
                     at java.lang.reflect.Method.invoke(Method.java:515)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)  
                     at dalvik.system.NativeStart.main(Native Method)  
+0

'компилировать e 'org.roboguice: roboguice: 3.0.1' предоставлен 'org.roboguice: roboblender: 3.0.1'' –

+0

та же ошибка и цели в строке 'setSupportActionBar (панель инструментов);' – test

ответ

1

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

Вызов атрибут id в Toolbar XML так:

<?xml version="1.0" encoding="utf-8"?> 
<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/tool_bar" 
    > 
</android.support.v7.widget.Toolbar> 

Затем удалите его из include блока, так это выглядит следующим образом:

<include 
    android:id="@+id/tool_bar" // No need 
    layout="@layout/tool_bar" /> 

Тогда

@InjectView(R.id.tool_bar) 
Toolbar toolbar; 
+0

такая же ошибка возникает при одном и том же коде строки, показывающем – test

+0

@test в порядке. Для тестового примера удалите тег 'include' .Call direct. –

+0

та же ошибка, заменил тег 'include' на ** toolbar.xml ** содержимое – test