java - 我正在尝试将工具栏菜单添加到我的应用程序,但当我登录时应用程序崩溃。我该如何解决这个问题?
问题描述
我正在尝试为我的应用程序设置一个带有菜单的工具栏,但是当我登录我的应用程序崩溃时。似乎应用程序问题出在支持操作栏中,这是我的代码,错误是:
进程:com.ianketter.onlinevoting,PID:24495 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.ianketter.onlinevoting/com.ianketter.onlinevoting.HomeActivity}:java.lang.IllegalStateException:此活动已经有一个动作酒吧提供的窗户装饰。不要在主题中请求 Window.FEATURE_SUPPORT_ACTION_BAR 并将 windowActionBar 设置为 false 以使用工具栏。在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3298) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3437) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 在 android。 app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app。ActivityThread$H.handleMessage(ActivityThread.java:2041) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main (ActivityThread.java:7386) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 在 com.android.internal.os .ZygoteInit.main(ZygoteInit.java:980) 原因:java.lang.IllegalStateException:此活动已经有一个由窗口装饰提供的操作栏。不要在主题中请求 Window.FEATURE_SUPPORT_ACTION_BAR 并将 windowActionBar 设置为 false 以使用工具栏。在 androidx.appcompat.app.AppCompatDelegateImpl.setSupportActionBar(AppCompatDelegateImpl.java:575) 在 androidx.appcompat.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:183) 在 com。
家庭活动.java;
package com.ianketter.onlinevoting;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.drawerlayout.widget.DrawerLayout;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.hardware.biometrics.BiometricPrompt;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.material.navigation.NavigationView;
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 java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class HomeActivity extends AppCompatActivity {
ImageView Auth,Tick;
private DatabaseReference mref;
String Username,Name,Email,Phone,Password,PartyName;
public String isVote="0";
TextView VoteNowTv,VotedTv,V2;
DrawerLayout drawerLayout;
NavigationView navigationView;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_home);
/*---------------------Hooks------------------------*/
drawerLayout=findViewById(R.id.drawerlayout);
navigationView=findViewById(R.id.nav_view);
toolbar=findViewById(R.id.toolbar);
/*---------------------Tool Bar------------------------*/
setSupportActionBar(toolbar);
/*---------------------Navigation Drawer Menu------------------------*/
navigationView.bringToFront();
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener((NavigationView.OnNavigationItemSelectedListener) this);
Intent i=getIntent();
Username = i.getStringExtra("username");
Name = i.getStringExtra("name");
Email = i.getStringExtra("email");
Phone = i.getStringExtra("phoneNo");
Password = i.getStringExtra("password");
mref= FirebaseDatabase.getInstance().getReference();
Auth=(ImageView)findViewById(R.id.authenticate);
Tick=(ImageView)findViewById(R.id.votedicon);
VoteNowTv=(TextView)findViewById(R.id.votenowtv);
VotedTv=(TextView)findViewById(R.id.votedtv);
V2=(TextView)findViewById(R.id.v2);
mref.child("Users").child(Phone).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
isVote=dataSnapshot.child("Vote").getValue().toString();
PartyName=dataSnapshot.child("Party").getValue().toString();
V2.setText("You voted for "+PartyName);
if(isVote.equals("1"))
{
Tick.setVisibility(View.VISIBLE);
VotedTv.setVisibility(View.VISIBLE);
V2.setVisibility(View.VISIBLE);
VoteNowTv.setVisibility(View.INVISIBLE);
Auth.setVisibility(View.INVISIBLE);
}
else
{
Tick.setVisibility(View.INVISIBLE);
VotedTv.setVisibility(View.INVISIBLE);
V2.setVisibility(View.INVISIBLE);
VoteNowTv.setVisibility(View.VISIBLE);
Auth.setVisibility(View.VISIBLE);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
final Executor executor = Executors.newSingleThreadExecutor();
final BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(this)
.setTitle("Fingerprint Authentication")
.setSubtitle("")
.setDescription("place you finger to vote")
.setNegativeButton("Cancel", executor, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).build();
final HomeActivity activity=this;
Auth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
biometricPrompt.authenticate(new CancellationSignal(), executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Intent i=new Intent(HomeActivity.this, VerifiyId.class);
i.putExtra("phone",Phone);
startActivity(i);
/**LoadingBar.setTitle("Please Wait");
LoadingBar.setMessage("Please wait while your vote is submitting in our database..");
LoadingBar.setCanceledOnTouchOutside(false);
LoadingBar.show();
mref.child("Users").child(Phone).child("Vote").setValue("1").addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
LoadingBar.dismiss();
Tick.setVisibility(View.VISIBLE);
VotedTv.setVisibility(View.VISIBLE);
VoteNowTv.setVisibility(View.INVISIBLE);
Auth.setVisibility(View.INVISIBLE);
}
});**/
}
});
}
});
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menu2,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId())
{
case R.id.logout2:
Intent intent=new Intent(HomeActivity.this,welcomeActivity.class);
startActivity(intent);
return true;
case R.id.updatepassword2:
Intent intent2=new Intent(HomeActivity.this,UserUpdatePassword.class);
intent2.putExtra("phone",Phone);
startActivity(intent2);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
}
}
这是我的 activity_home.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back2"
tools:context=".HomeActivity"
android:id="@+id/drawerlayout"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<com.google.android.material.navigation.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/nav_view"
app:menu="@menu/main_menu"
android:layout_gravity="start"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#7e2a90"
android:theme="?attr/actionBarTheme"
app:title="Toolbars"
app:titleTextColor="#ffff"
android:layout_marginBottom="5dp"
app:titleMarginStart="10dp"
/>
<TextView
android:id="@+id/votenowtv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:padding="20dp"
android:textAlignment="center"
android:textColor="#ffff"
android:textStyle="bold"
android:textSize="20sp"
android:visibility="invisible"
android:text="Click here to vote now"
android:drawableStart="@drawable/ic_arrow"
app:drawableEndCompat="@drawable/ic_arrow" />
<ImageView
android:layout_below="@+id/votenowtv"
android:id="@+id/authenticate"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/voting"
android:visibility="invisible"
app:tint="#ffff" />
<ImageView
android:layout_below="@+id/votenowtv"
android:id="@+id/votedicon"
android:layout_centerHorizontal="true"
android:layout_width="200dp"
android:layout_height="200dp"
android:visibility="invisible"
android:src="@drawable/voted"
app:tint="#ffff" />
<TextView
android:layout_below="@+id/votedicon"
android:id="@+id/votedtv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:padding="20dp"
android:textStyle="bold"
android:textAlignment="center"
android:visibility="invisible"
android:textColor="#ffff"
android:textSize="20sp"
android:text="Thanks for voting!"/>
<TextView
android:id="@+id/v2"
android:layout_below="@+id/votedtv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:textAlignment="center"
android:textColor="#ffff"
android:textSize="18sp"
android:textStyle="bold"
android:text="You"
android:visibility="invisible"/>
</RelativeLayout>
</androidx.drawerlayout.widget.DrawerLayout>
这是我的 main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:icon="@drawable/home_icon"
android:title="Home"/>
<item android:id="@+id/updatepassword2"
android:title="Update Password"
android:icon="@drawable/ic_pass"
/>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/settings_icon"
android:title="Settings" />
</group>
<item android:title="Profile">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_profile"
android:icon="@drawable/profile_icon"
android:title="Profile" />
<item
android:id="@+id/nav_logout"
android:icon="@drawable/logout_icon"
android:title="Logout" />
</group>
</menu>
</item>
<item android:title="Communicate">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_share"
android:icon="@drawable/share_icon"
android:title="Share" />
<item
android:id="@+id/nav_rate"
android:icon="@drawable/rate_icon"
android:title="Rate Us" />
</group>
</menu>
</item>
</menu>
这是我的styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
我已将错误范围缩小到
setSupportActionBar(toolbar);
我已经尝试了所有可能的方法,但它似乎不起作用,请帮助我。
解决方案
推荐阅读
- python - 如何自动安装和使用 conda 来启动 python 脚本?
- python - 即使代码具有给定值,ValueError 也会引发
- c++ - 仅返回类型不同的虚拟覆盖方法会产生编译错误
- django - 循环导入出现错误如何解决?
- redis - Linux Container 中 redis.conf 中 IP 的绑定地址
- wpf - 设置可编辑组合框的边框颜色,重点放在 PART_EditableTextBox
- microsoft-graph-api - Microsoft Graph API 不尊重 OData
- render - Blender 2.91 渲染/着色:为什么我的 alpha 对象在渲染模式下是模糊/嘈杂和像素化的东西?
- python - 为什么 True 值返回 True 并在 python 中具有函数成员资格
- android - 如何使用 Google in app billing 在 Android 应用程序中的特定日期结束应用程序内购买的有效性?