Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 菜单没有显示';不显示并且列表视图不可链接_Android_Firebase Realtime Database_Android Recyclerview_Android Menu - Fatal编程技术网

Android 菜单没有显示';不显示并且列表视图不可链接

Android 菜单没有显示';不显示并且列表视图不可链接,android,firebase-realtime-database,android-recyclerview,android-menu,Android,Firebase Realtime Database,Android Recyclerview,Android Menu,谢谢你帮助我。菜单未出现,回收器视图中的列表视图不可点击 这是菜单部分 public class QuizListActivity extends AppCompatActivity { private RecyclerView mRecyclerView; private FirebaseAuth mAuth; @Override protected void onCreate(Bundle savedInstanceState) { super

谢谢你帮助我。菜单未出现,回收器视图中的列表视图不可点击

这是菜单部分

public class QuizListActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private FirebaseAuth mAuth;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz_list);
        mAuth = FirebaseAuth.getInstance();

    mRecyclerView = (RecyclerView)findViewById(R.id.recyclerBView);
    new FirebaseDatabaseHelper().readQuiz(new FirebaseDatabaseHelper.DataStatus() {
        @Override
        public void DataIsLoaded(List<Quiz> quizzes, List<String> keys) {
            new RecyclerConfig().setConfig(mRecyclerView, QuizListActivity.this, quizzes, keys);
        }

        @Override
        public void DataIsInserted() {

        }

        @Override
        public void DataIsUpdated() {

        }

        @Override
        public void DataIsDeleted() {

        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    FirebaseUser user = mAuth.getCurrentUser();
    getMenuInflater().inflate(R.menu.quizlistmenu, menu);
    if(user!=null) {
        menu.getItem(0).setVisible(true);
        menu.getItem(1).setVisible(true);
        menu.getItem(2).setVisible(true);
    }

    return super.onCreateOptionsMenu(menu);
}

public boolean onPrepareOptionsMenu(Menu menu)
{FirebaseUser user = mAuth.getCurrentUser();
    if(user!=null) {
        menu.getItem(0).setVisible(true);
        menu.getItem(1).setVisible(true);
        menu.getItem(2).setVisible(true);
    }

    return super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId())
    {
        case R.id.new_book:
            startActivity(new Intent(this, NewQuestionActivity.class));
            return true;
        case R.id.user_approval:
            startActivity(new Intent(this, Approval.class));
            return true;
        case R.id.signout:
            mAuth.signOut();
            invalidateOptionsMenu();
            RecyclerConfig.logout();
            return true;
    }
    return super.onOptionsItemSelected(item);
}
}
公共类QuizListActivity扩展了AppCompatActivity{
私人回收视图mRecyclerView;
私人消防队;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u quick\u list);
mAuth=FirebaseAuth.getInstance();
mRecyclerView=(RecyclerView)findViewById(R.id.recyclerBView);
新建FirebaseDatabaseHelper().readquick(新建FirebaseDatabaseHelper.DataStatus()){
@凌驾
public void数据已加载(列表测验、列表键){
new RecyclerConfig().setConfig(mRecyclerView,QuizListActivity.this,quizzes,keys);
}
@凌驾
public void DataIsInserted(){
}
@凌驾
public void DataIsUpdated(){
}
@凌驾
公共无效数据删除(){
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
FirebaseUser=mAuth.getCurrentUser();
getMenuInflater().充气(R.menu.quizlistmenu,menu);
如果(用户!=null){
menu.getItem(0).setVisible(true);
menu.getItem(1).setVisible(true);
menu.getItem(2).setVisible(true);
}
返回super.onCreateOptions菜单(菜单);
}
公共布尔值OnPrepareOptions菜单(菜单)
{FirebaseUser=mAuth.getCurrentUser();
如果(用户!=null){
menu.getItem(0).setVisible(true);
menu.getItem(1).setVisible(true);
menu.getItem(2).setVisible(true);
}
返回super.onPrepareOptions菜单(菜单);
}
@凌驾
公共布尔值OnOptionItemSelected(@NonNull MenuItem item){
开关(item.getItemId())
{
案例R.id.新书:
startActivity(新意图(this,NewQuestionActivity.class));
返回true;
案例R.id.user\U批准:
startActivity(新意图(本,Approval.class));
返回true;
案例R.id.注销:
mAuth.signOut();
无效操作菜单();
RecyclerConfig.logout();
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
这是菜单

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/new_book"
        android:title="New Question" />
    <item
        android:id="@+id/user_approval"
        android:title="Registered User" />
    <item
        android:id="@+id/signout"
        android:title="Sign Out" />
</menu>

这是回收部分

public class RecyclerConfig
{
    FirebaseAuth mAuth;
    private static FirebaseUser user;
    private Context mContext;
    private QuizAdapter mQuizAdapter;
    public void setConfig(RecyclerView mRecyclerView, Context context, List<Quiz> quizzes, List<String> keys)
    {
        mAuth = FirebaseAuth.getInstance();
        user = mAuth.getCurrentUser();
        mContext = context;
        mQuizAdapter = new QuizAdapter(quizzes, keys);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
        mRecyclerView.setAdapter(mQuizAdapter);
    }
    class QuizItemView extends RecyclerView.ViewHolder
    {
        private TextView mquestion,mans1,mans2,mans3,mans4,mcorrect,mcategoryid;

    private String key;

    public QuizItemView(ViewGroup parent)
    {
        super(LayoutInflater.from(mContext)
                .inflate(R.layout.quizlistitem, parent, false));

        mquestion = (TextView) itemView.findViewById(R.id.questiontv);
        mans1 = (TextView) itemView.findViewById(R.id.ans1tv);
        mans2 = (TextView) itemView.findViewById(R.id.ans2tv);
        mans3 = (TextView) itemView.findViewById(R.id.ans3tv);
        mans4 = (TextView) itemView.findViewById(R.id.ans4tv);
        mcorrect = (TextView) itemView.findViewById(R.id.correcttv);
        mcategoryid = (TextView) itemView.findViewById(R.id.categorytv);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(user!=null) {
                    Intent intent = new Intent(mContext, QuizDetailActivity.class);
                    intent.putExtra("key", key);
                    intent.putExtra("question", mquestion.getText().toString());
                    intent.putExtra("answer1", mans1.getText().toString());
                    intent.putExtra("answer2", mans2.getText().toString());
                    intent.putExtra("answer3", mans3.getText().toString());
                    intent.putExtra("answer3", mans4.getText().toString());
                    intent.putExtra("answer3", mcorrect.getText().toString());
                    intent.putExtra("categoryid", mcategoryid.getText().toString());

                    mContext.startActivity(intent);
                }
                /*else
                {
                    mContext.startActivity(new Intent(mContext, SignInActivity.class));
                }*/

            }
        });
    }

    public void bind(Quiz quizzes, String key)
    {
        mquestion.setText(quizzes.getQuestion());
        mans1.setText(quizzes.getAnswer1());
        mans2.setText(quizzes.getAnswer2());
        mans3.setText(quizzes.getAnswer3());
        mans4.setText(quizzes.getAnswer4());
        mcorrect.setText(quizzes.getCorrect());
        mcategoryid.setText(quizzes.getCategoryid());
        this.key = key;
    }
}
class QuizAdapter extends RecyclerView.Adapter<QuizItemView>
{
    private List<Quiz> mQuizList;
    private List<String> mKeys;

    public QuizAdapter(List<Quiz> mQuizList, List<String> mKeys) {
        this.mQuizList = mQuizList;
        this.mKeys = mKeys;
    }

    @NonNull
    @Override
    public QuizItemView onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new QuizItemView(parent);
    }

    @Override
    public void onBindViewHolder(@NonNull QuizItemView holder, int position) {
        holder.bind(mQuizList.get(position), mKeys.get(position));
    }

    @Override
    public int getItemCount() {
        return mQuizList.size();
    }
}

public static void logout()
{
    user = null;
}
}
公共类回收器配置
{
FirebaseAuth mAuth;
私有静态FirebaseUser用户;
私有上下文;
私人QuizAdapter mQuizAdapter;
public void setConfig(RecyclerView mRecyclerView、上下文上下文、列表测验、列表键)
{
mAuth=FirebaseAuth.getInstance();
user=mAuth.getCurrentUser();
mContext=上下文;
mQuizAdapter=新的QuizAdapter(测验、键);
mRecyclerView.setLayoutManager(新的LinearLayoutManager(上下文));
setAdapter(mQuizAdapter);
}
类QuizItemView扩展了RecyclerView.ViewHolder
{
私有文本视图mquestion、mans1、mans2、mans3、mans4、mcorrect、mcategoryid;
私钥;
公共QuizItemView(视图组父级)
{
超级(LayoutFlater.from)(mContext)
.充气(R.layout.quizlistitem,父项,false));
mquestion=(TextView)itemView.findViewById(R.id.questiontv);
mans1=(TextView)itemView.findViewById(R.id.ans1tv);
mans2=(TextView)itemView.findViewById(R.id.ans2tv);
mans3=(TextView)itemView.findViewById(R.id.ans3tv);
mans4=(TextView)itemView.findViewById(R.id.ans4tv);
mcorrect=(TextView)itemView.findViewById(R.id.correcttv);
mcategoryid=(TextView)itemView.findViewById(R.id.categorytv);
itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(用户!=null){
意向意向=新意向(mContext,QuizDetailActivity.class);
意图。putExtra(“键”,键);
intent.putExtra(“问题”,mquestion.getText().toString());
intent.putExtra(“answer1”,mans1.getText().toString());
intent.putExtra(“answer2”,mans2.getText().toString());
intent.putExtra(“answer3”,mans3.getText().toString());
intent.putExtra(“answer3”,mans4.getText().toString());
intent.putExtra(“answer3”,mcorrect.getText().toString());
intent.putExtra(“categoryid”,mcategoryid.getText().toString());
mContext.startActivity(意图);
}
/*否则
{
新意图(mContext,SignInActivity.class));
}*/
}
});
}
公共无效绑定(测验、字符串键)
{
mquestion.setText(quizzes.getQuestion());
mans1.setText(quizzes.getAnswer1());
mans2.setText(quizzes.getAnswer2());
mans3.setText(quizzes.getAnswer3());
mans4.setText(quizzes.getAnswer4());
mcorrect.setText(quizzes.getCorrect());
mcategoryid.setText(quizzes.getCategoryid());
this.key=key;
}
}
类QuizAdapter扩展了RecyclerView.Adapter
{
私有列表mQuizList;
私人名单;
公共QuizAdapter(列表mQuizList,列表mKeys){
this.mQuizList=mQuizList;
this.mKeys=mKeys;
}
@非空
@凌驾
public QuizItemView onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
返回新的QuizItemView(父级);
}
@凌驾
public void onBindViewHolder(@NonNull QuizItemView holder,int位置){
holder.bind(mQuizList.get(position),mKeys.get(position));
}
@凌驾
public int getItemCount(){
返回mQuizList.size();
}
}
公共静态无效注销()
{
user=null;
}
}

这是登录/登记表

public class SignInActivity extends AppCompatActivity {
MaterialEditText edtNewEmail,edtNewPassword,edtnewName, edtnewAge, edtnewAddress, edtStatus; // for register
MaterialEditText edtEmail,edtPassword; //for Signin

Button btnRegister,btnSignIn;
FirebaseAuth mAuth;


FirebaseDatabase database;
DatabaseReference users;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sign_in);
    mAuth = FirebaseAuth.getInstance();

    //Firebase
    database = FirebaseDatabase.getInstance();
    users = database.getReference("User");

    edtEmail = (MaterialEditText)findViewById(R.id.edtEmail);
    edtPassword = (MaterialEditText)findViewById(R.id.edtPassword);

    btnSignIn = (Button)findViewById(R.id.signInBtn);
    btnRegister = (Button)findViewById(R.id.regBtn);

    btnRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            showSignUpDialog();
        }
    });

    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            signIn(edtEmail.getText().toString(),edtPassword.getText().toString());
        }
    });

}

private void signIn(final String user, final String pwd) {
    users.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.child(user).exists())
            {
                if(!user.isEmpty())
                {
                 User login = dataSnapshot.child(user).getValue(User.class);
                 if(login.getPassword().equals(pwd))
                 {
                     Common.currentUser = login;
                         if(login.getStatus().equals("Admin"))
                         {
                             mAuth.signInWithEmailAndPassword(edtEmail.getText().toString(),
                                     edtPassword.getText().toString());
                             Toast.makeText(SignInActivity.this, "User signed in", Toast.LENGTH_LONG).show();
                             Intent intent = new Intent(SignInActivity.this,QuizListActivity.class);
                             intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                             startActivity(intent);
                             finish(); return;
                         }
                         else if(login.getStatus().equals("User") && login.getApproval().equals("Y"))
                             {
                                 Intent homeactivity = new Intent(SignInActivity.this,Home.class);
                                 startActivity(homeactivity);
                                 finish();
                             }
                         else if(login.getStatus().equals("User") && login.getApproval().equals("N"))
                         {
                             Intent adminactivity = new Intent(SignInActivity.this,Home.class);
                             startActivity(adminactivity);
                             finish();
                         }

                 }
                 else
                     Toast.makeText(SignInActivity.this,"Login Failed",Toast.LENGTH_SHORT).show();
                }
                else
                {
                    Toast.makeText(SignInActivity.this,"Please fill in",Toast.LENGTH_SHORT).show();
                }
            }
            else
            {
                Toast.makeText(SignInActivity.this,"User doesn't exist",Toast.LENGTH_SHORT).show();
            }
        }


        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

private void showSignUpDialog() {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(SignInActivity.this);
    alertDialog.setTitle("Sign Up");
    //alertDialog.setMessage("Please fill full information");

    LayoutInflater inflater = this.getLayoutInflater();
    View activity_register = inflater.inflate(R.layout.activity_register,null);

    //edtNewUserName = (MaterialEditText)activity_register.findViewById(R.id.edtNewUserName);
    edtNewEmail = (MaterialEditText)activity_register.findViewById(R.id.edtNewEmail);
    edtNewPassword = (MaterialEditText)activity_register.findViewById(R.id.edtNewPassword);
    edtnewName =  (MaterialEditText)activity_register.findViewById(R.id.edtnewName);
    edtnewAge = (MaterialEditText)activity_register.findViewById(R.id.edtnewAge);
    edtnewAddress = (MaterialEditText)activity_register.findViewById(R.id.edtnewAddress);
    edtStatus = (MaterialEditText)activity_register.findViewById(R.id.edtStatus);

    alertDialog.setView(activity_register);
    //alertDialog.setIcon(R.drawable.ic_account_circle_black_24dp);

    alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            dialogInterface.dismiss();
        }
    });
    alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            final User user = new User(edtNewEmail.getText().toString(),
                    edtNewPassword.getText().toString(),edtnewName.getText().toString(),
                    edtnewAge.getText().toString(),edtnewAddress.getText().toString(),edtStatus.getText().toString(),
                    "N");
            users.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if(dataSnapshot.child(user.getEmail()).exists())
                        Toast.makeText(SignInActivity.this,"User already exist.",Toast.LENGTH_LONG).show();
                    else
                    {
                        if(dataSnapshot.child(user.getStatus()).exists() && user.getStatus() == "Admin")
                        {
                            mAuth.createUserWithEmailAndPassword(edtNewEmail.getText().toString(),
                                    edtNewPassword.getText().toString())
                                    .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                                        @Override
                                        public void onComplete(@NonNull Task<AuthResult> task) {
                                            if(task.isSuccessful())
                                            {
                                                FirebaseDatabase.getInstance().getReference("User")
                                                        .child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(user);
                                            }
                                        }
                                    });
                        }
                        else {
                            users.child(user.getEmail())
                                    .setValue(user);
                            Toast.makeText(SignInActivity.this, "User registered.", Toast.LENGTH_LONG).show();
                        }
                    }

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
            dialogInterface.dismiss();
        }
    });
    alertDialog.show();

}

}
private FirebaseUser user;

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_quiz_list);
   mAuth = FirebaseAuth.getInstance();
   user = mAuth.getCurrentUser();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.quizlistmenu, menu);
    if(user!=null) {
        menu.getItem(0).setVisible(true);
        menu.getItem(1).setVisible(true);
        menu.getItem(2).setVisible(true);
    }
    return super.onCreateOptionsMenu(menu);
}