2016-03-31 8 views
1

Ich lerne über die Entwicklung von Android-Apps, und ich verwende die Schublade Vorlage, die eine Symbolleiste verwendet und integriert es in der Aktionsleiste. Das Problem, das ich habe, tritt auf, wenn ich versuche, eine Hauptjava-Datei zu machen, die die Schubladen- und Aktionsleistenaktionen hat. Dann würde jedes tatsächliche Layout von der Hauptdatei ausgehen, um die erforderlichen Aktivitäten durchzuführen.Android Studio Symbolleiste als Aktionsleiste Fehler

Erstens ist dies der Fehler, den ich habe.

03-30 23: 10: 22.105 bis 22.105 24,895/com.mmaengineer.runique E/Android Runtime: fatal EXCEPTION: main Prozess: com.mmaengineer.runique, PID: 22105 java.lang.RuntimeException:

Die Aktivität konnte nicht gestartet werden ComponentInfo {com.maengineer.runique/com.mmaengineer.runique.MainActivity}: java.lang.IllegalStateException: Diese Aktivität verfügt bereits über eine Aktionsleiste, die vom Fensterdekor bereitgestellt wird. Fordern Sie nicht Window.FEATURE_SUPPORT_ACTION_BAR an und legen Sie windowActionBar in Ihrem Design auf false fest, um stattdessen eine Toolbar zu verwenden.

verursacht durch: java.lang.IllegalStateException: Diese Aktivität verfügt bereits über eine Aktionsleiste, die vom Fensterdekor bereitgestellt wird. Fordern Sie nicht Window.FEATURE_SUPPORT_ACTION_BAR an und legen Sie windowActionBar in Ihrem Design auf false fest, um stattdessen eine Toolbar zu verwenden. bei android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar (AppCompatDelegateImplV7.java:197) bei android.support.v7.app.AppCompatActivity.setSupportActionBar (AppCompatActivity.java:129)

Manifest-Datei

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <activity 
     android:name=".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> 

    <activity 
     android:name=".SettingsActivity" 
     android:label="@string/app_name_settings"> 
    </activity> 
</application> 

MainActivity.java

public class MainActivity extends MainControls { 
public static final int TL = Toast.LENGTH_SHORT; // Toast.LENGTH_LONG for longer 
public SharedPreferences mPrefs; 
public String gameMode; 
public String double_xp; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    mPrefs = getSharedPreferences("LSprefs", 0); 
    gameMode = mPrefs.getString("gameMode", ""); 
    double_xp = mPrefs.getString("double_xp", ""); 

    if (gameMode == "") { 
     Intent intent = new Intent(this, SettingsActivity.class); 
     startActivity(intent); 
    } 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    ((TextView)findViewById(R.id.textView2)).setText(gameMode); 
    ((TextView)findViewById(R.id.textView3)).setText(double_xp); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

MainControls.java

public class MainControls extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     Intent intent = new Intent(this, SettingsActivity.class); 
     startActivity(intent); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_camera) { 
     // Handle the camera action 
    } else if (id == R.id.nav_gallery) { 

    } else if (id == R.id.nav_slideshow) { 

    } else if (id == R.id.nav_manage) { 

    } else if (id == R.id.nav_share) { 

    } else if (id == R.id.nav_send) { 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

}

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

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

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

Antwort

2

Der beste Weg, um es zu lösen, dies zu ersetzen wäre:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

mit diesem:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 

Und lassen Sie alles andere unverändert.

Also, Ihr AppTheme wäre:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

diese Weise können Sie immer noch alle Ihre Designfarben haben, wie Sie es wünschen. Stellen Sie sicher, dass Sie eine Symbolleiste für jede Aktivität verwenden, für die Sie eine ActionBar haben möchten.

0

Versuchen Sie folgendes:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 
0

Das Problem ist, dass Ihre Aktivität ein Thema verwenden muss, die von AppCompat.NoActionBar erstreckt, nicht AppCompat .

Versuchen Sie, das Thema Ihrer App zu ändern (in AndroidManifest.xml) von

android:theme="@style/AppTheme" 

zu

android:theme="@style/AppTheme.NoActionBar" 

Wenn das nicht versuchen, funktioniert das Thema zu Ihrem MainActivity fügte hinzu:

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme.NoActionBar"> 

The answer from ARP macht grundsätzlich das gleiche, aber seit Androi d Studio ist nett genug, um bereits die AppTheme.NoActionBar für Sie zu generieren, so dass die gleichen Änderungen an AppTheme ist nur dumm.

+0

Das hat es getan. Ich bin mir nicht sicher, warum dies nur ein Problem wurde, wenn ich einen Begrüßungsbildschirm hinzufügte, da es eine Standardvorlage war. Aber das scheint zu funktionieren. Vielen Dank! – user2928301

+0

Sie sind sich nicht sicher, warum Sie das von den Dateien erhalten, die Android Studio generiert, vielleicht haben Sie einen Projekttyp erstellt und dann die Hauptaktivität geändert? Wie auch immer, froh, dass es funktioniert hat, ziehe eine der Antworten in Betracht, die dir geholfen haben. – BadCash

Verwandte Themen