Android应用程序在模拟器上运行,而不是在真实设备上运行



Android模拟器在运行应用程序时正常工作,但在实际设备上,应用程序从操作栏获得错误。我使用的是android bumble bee,设备是三星s21

我已经有了NoActionBar以及windowNoTitle true和windowActionBar false

这是我的错误

Process: com.example.wonderfinder, PID: 14427
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.wonderfinder/com.example.wonderfinder.MainActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4166)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4312)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2571)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8741)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
at androidx.appcompat.app.AppCompatDelegateImpl.setSupportActionBar(AppCompatDelegateImpl.java:581)
at androidx.appcompat.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:183)
at com.example.wonderfinder.MainActivity.onCreate(MainActivity.java:46)
at android.app.Activity.performCreate(Activity.java:8578)
at android.app.Activity.performCreate(Activity.java:8557)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1384)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4147)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4312) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2571) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loopOnce(Looper.java:226) 
at android.os.Looper.loop(Looper.java:313) 
at android.app.ActivityThread.main(ActivityThread.java:8741) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) 
2022-11-16 13:17:46.765 14427-14427/? I/Process: Sending signal. PID: 14427 SIG: 9

Here is my theme.xml

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.WonderFinder" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryVariant">@color/primaryDarkColor</item>
<item name="android:colorPrimaryDark">@color/primaryColor</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/primaryColor</item>
<item name="colorSecondaryVariant">@color/primaryColor</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:textColorHint">@color/textColor</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="android:navigationBarColor">@color/primaryColor</item>
<!-- Customize your theme here. -->
</style>
<style name="ActionBarTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<!-- Primary brand color. -->
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryVariant">@color/primaryDarkColor</item>
<item name="android:colorPrimaryDark">@color/primaryColor</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/primaryColor</item>
<item name="colorSecondaryVariant">@color/primaryColor</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:textColorHint">@color/textColor</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="android:navigationBarColor">@color/primaryColor</item>
<!-- Customize your theme here. -->
</style>
</resources>

这是我的主要活动

package com.example.wonderfinder;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.NavigationUI;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.wonderfinder.databinding.ActivityMainBinding;
import com.example.wonderfinder.databinding.NavDrawerLayoutBinding;
import com.example.wonderfinder.databinding.ToolbarLayoutBinding;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import de.hdodenhof.circleimageview.CircleImageView;
public class MainActivity extends AppCompatActivity {
//Declare all variables as private variables with their respective types
private NavDrawerLayoutBinding navDrawerLayoutBinding;
private ActivityMainBinding activityMainBinding;
private ToolbarLayoutBinding toolbarLayoutBinding;
private FirebaseAuth firebaseAuth;
private TextView txtName, txtEmail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
navDrawerLayoutBinding = NavDrawerLayoutBinding.inflate(getLayoutInflater());
setContentView(navDrawerLayoutBinding.getRoot());
//Set the variables to their respective values
activityMainBinding = navDrawerLayoutBinding.mainActivity;
toolbarLayoutBinding = activityMainBinding.toolbar;
setSupportActionBar(toolbarLayoutBinding.toolbar);
firebaseAuth = FirebaseAuth.getInstance();
//Toggle the drawer with open and close
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, navDrawerLayoutBinding.navDrawer, toolbarLayoutBinding.toolbar,
R.string.open_navigation_drawer,
R.string.close_navigation_drawer
);
navDrawerLayoutBinding.navDrawer.addDrawerListener(toggle);
toggle.syncState();
NavController navController = Navigation.findNavController(this, R.id.fragmentContainer);
NavigationUI.setupWithNavController(navDrawerLayoutBinding.navigationView, navController);
View headerLayout = navDrawerLayoutBinding.navigationView.getHeaderView(0);
txtName = headerLayout.findViewById(R.id.txtHeaderName);
txtEmail = headerLayout.findViewById(R.id.txtHeaderEmail);
//Call getUserData method
getUserData();
}
//Close the nav the drawer on back pressed
@Override
public void onBackPressed() {
if (navDrawerLayoutBinding.navDrawer.isDrawerOpen(GravityCompat.START))
navDrawerLayoutBinding.navDrawer.closeDrawer(GravityCompat.START);
else
super.onBackPressed();
}
//Method to populate the users username and email in the nav drawer
private void getUserData() {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Users")
.child(firebaseAuth.getUid());
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
UserModel userModel = snapshot.getValue(UserModel.class);
txtName.setText(userModel.getUsername());
txtEmail.setText(userModel.getEmail());
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}

我将在黑暗中大胆尝试,并假设您在设备上使用黑暗模式(夜间模式),但在模拟器上使用正常模式(白天模式)。我说的对吗?

查看这个相关问题中的一些答案:这个Activity已经有一个由窗口装饰提供的操作栏?

相关内容

最新更新