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" />
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
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