2016-07-06 19 views
0

Als schnelle Visualisierung, ist das, was mein Layout wie folgt aussieht:Rahmen-ID für Stammansicht stürzt android app

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_root_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="me.smac89.sample.MainActivity"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/main_content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="@dimen/cards_margin" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
</android.support.design.widget.CoordinatorLayout> 

Wenn ich eine ID festgelegt (android:id="") für das Coordinator Layout, die App stürzt beim Start , aber das Entfernen der ID erlaubt es normal zu laufen. Was ist los? Warum verursacht das Festlegen einer ID für die Stammansicht den Absturz der App?

Ich habe Leute gesehen, die diese findViewById(android.R.id.content) verwenden, um die Grundansicht zu erhalten; Ist dies die einzige Möglichkeit, den Rootview zu erhalten?


Crashlog

07-06 18: 30: 42,253 9385-9385/me.smac89.deloittepixel E/Android Runtime: Schwerwiegende Ausnahme: main Prozess: me.smac89. deloittepixel, PID: 9385 java.lang.RuntimeException: Kann Aktivität ComponentInfo {me.smac89.sample/me.smac89.sample.MainActivity} starten: java.lang.ClassCastException: android.support.design.wid get.CoordinatorLayout kann nicht auf android.app.Activity bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2416) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) bei android gegossen werden .app.ActivityThread.-wrap11 (ActivityThread.java) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android .os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang.reflect.Method.invoke (native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit. main (ZygoteInit.java:616) verursacht durch: java.lang.ClassCastException: android.support.design.widget.CoordinatorLayout nicht android.app.Activity gegossen werden kann bei butterknife.internal.Finder $ 2.getContext (Finder .java: 34) bei butterknife.internal.Finder.getResourceEntryName (Finder.java:131) bei butterknife.internal.Finder.findRequiredViewAsType (Finder.java:86) um me.smac89.sample.MainActivity $$ ViewBinder $ InnerUnbinder. (MainActivity $$ ViewBinder.java: 32) um me.smac89.sample.MainActivity $$ ViewBinder.bind (MainActivity $$ ViewBinder.java: 20) bei me.smac89.sample.MainActivity $$ ViewBinder.bind (MainActivity $$ ViewBinder.java: 17) bei butterknife.ButterKnife.bind (ButterKnife.java:122) bei me.smac89.sample.MainActivity.onCreate (MainActivity.java:50) bei android.app.Activity.performCreate (Activity.java:6237) um android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1107) unter android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2369) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) bei android.app.ActivityThread.-wrap11 (ActivityThread.java) bei android.app.ActivityThread $ H .handleMessage (ActivityThread.java:1344) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang.reflect.Method.invoke (native Methode) um com.android.i nternal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

MainActivity.java

public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener { 

    public static final String TAG = MainActivity.class.getName(); 

    @BindView(R.id.main_content) 
    ViewPager viewPager; 

    @BindView(R.id.main_tab_spinner) 
    Spinner spinner; 

    @BindView(R.id.main_tab) 
    TabLayout tabLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     setKeyAndSecret(); 
     ButterKnife.bind(this); 
     spinner.setAdapter(new SpinnerDummyAdapter(this)); 

     initTabs(); 
     viewPager.addOnPageChangeListener(this); 
    } 
    ... 
} 
+0

Welche ID setzen Sie? – jbarat

+0

@jbarat Zuerst diese 'android: id =" @ + id/main_root_view "', aber nach dem ersten Absturz habe ich versucht 'android: id =" @ + id/blahblah "' und immer noch den gleichen Fehler – smac89

+0

Woher kommst du? Setze das Layout? Wie finden Sie Ansichts-ID für root? Können Sie das Absturzprotokoll anzeigen? –

Antwort

0

Ich hatte ein ähnliches Problem und löste es mit: Build> Clean Project