簡體   English   中英

Android:如何使用“ Volley”在導航視圖中隱藏登錄和注冊選項以及已啟用的注銷選項

[英]Android: How to hide sign-in and sign-up option and enabled logout option in Navigation View using **Volley**

登錄和注冊的過程是Volley 當用戶成功執行任何操作並希望看到我聲明為不可見的log_out菜單項時,我想刪除登錄和注冊選項。 有什么方法可以使此應用程序中的所有導航抽屜中的登錄和注冊信息不可見?

此活動以jsonObject形式獲得成功響應

LogIn.java

 public class LogIn extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

// declare the variables

private EditText email ,password;
private Button btn_login;
private ProgressBar loading;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_log_in2);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // setting variables

    loading = findViewById(R.id.loading);
    email = findViewById(R.id.email);
    password = findViewById(R.id.password);
    btn_login = findViewById(R.id.btn_login);
    //btn_log_out = findViewById(R.id.log_out);
    TextView link_register = findViewById(R.id.link_regist);




    // click listenr for logging a user

    btn_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String mEmail = email.getText().toString().trim();
            String mPass = password.getText().toString().trim();

            if(!mEmail.isEmpty() || !mPass.isEmpty()){
                LogIn(mEmail, mPass);
            }else {
                email.setError("Please insert an e-mail");
                password.setError("Please insert a password");
            }
        }
    });

    link_register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(LogIn.this,Registration.class));
        }
    });

    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.addDrawerListener(toggle);
    toggle.syncState();

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


}



private void LogIn(final String email, final String password) {

    loading.setVisibility(View.VISIBLE);
    btn_login.setVisibility(View.GONE);

    String URL_LOGIN = "https://maknam.com/Portal2/apis/login.php";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_LOGIN,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {

                        JSONObject jsonObject = new JSONObject(response);
                        String success = jsonObject.getString("success");
                        JSONArray jsonArray = jsonObject.getJSONArray("login");

                        if (success.equals("1")) {
                            for (int i = 0; i < jsonArray.length(); i++)
                            {

                                JSONObject object = jsonArray.getJSONObject(i);

                                //noinspection unused
                                String name = object.getString("name").trim();
                                //noinspection unused,unused
                                String email = object.getString("email").trim();

                                Intent lg = new Intent(LogIn.this,
                                        Home.class);
                                startActivity(lg);

                                loading.setVisibility(View.GONE);
                            }
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                        loading.setVisibility(View.GONE);
                        btn_login.setVisibility(View.VISIBLE);
                        Toast.makeText(LogIn.this, "Error"+ e.toString(), Toast.LENGTH_SHORT).show();

                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                    loading.setVisibility(View.GONE);
                    btn_login.setVisibility(View.VISIBLE);
                    Toast.makeText(LogIn.this, "Error"+ error.toString(), Toast.LENGTH_SHORT).show();
                }
            }
    )


    {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("email", email);
            params.put("password", password);
            return params;

        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);




}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

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

@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) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

此活動還注冊在jsonObject中 ,該錯誤錯誤事件已成功顯示

Registration.Java

   public class Registration extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

// declare variables
private EditText name;
private EditText email;
private EditText password;
private Button btn_register;
private ProgressBar loading;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_registration);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


    loading = findViewById(R.id.loading);
    name = findViewById(R.id.name);
    email = findViewById(R.id.email);
    password = findViewById(R.id.password);
    EditText c_password = findViewById(R.id.c_password);
    btn_register = findViewById(R.id.btn_register);
    // click view for register a new user

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

    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.addDrawerListener(toggle);
    toggle.syncState();

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


private void Register(){
    loading.setVisibility(View.VISIBLE);
    btn_register.setVisibility(View.GONE);



    final String name = this.name.getText().toString().trim();
    final String email = this.email.getText().toString().trim();
    final String password = this.password.getText().toString().trim();

    String URL_REGST = "http://maknam.com/Portal2/apis/register.php";
    //String URL_REGST = "http://192.168.1.103/android_register_login/register.php";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_REGST, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonObject = new JSONObject(response);
                String success = jsonObject.getString("success");
                if (success.equals("1")) {

                    Toast.makeText(Registration.this, "Registration Successful!", Toast.LENGTH_SHORT).show();
                }
            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(Registration.this, "Registration Error" + e.toString(), Toast.LENGTH_SHORT).show();
                loading.setVisibility(View.GONE);
                btn_register.setVisibility(View.VISIBLE);
            }
        }
    },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                    Toast.makeText(Registration.this, "Registration Error" + error.toString(), Toast.LENGTH_SHORT).show();
                    loading.setVisibility(View.GONE);
                    btn_register.setVisibility(View.VISIBLE);

                }
            })

    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            Map<String, String> params = new HashMap<>();
            params.put("name",name);
            params.put("email", email);
            params.put("password", password);
            return params;

        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}

@Override
public void onBackPressed() {
   //functionality for backpress
}

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

默認情況下,“ 注銷”菜單不可見

activity_login.drawer

 <group android:checkableBehavior="single">
    <item

        android:id="@+id/nav_products"
        android:icon="@drawable/ic_shopping_cart_black_24px_product"
        android:title="Products"
        tools:ignore="HardcodedText" />
    <item
        android:id="@+id/verify_product"
        android:icon="@drawable/ic_search_black_48dp"
        android:title="Verify A Product"
        tools:ignore="HardcodedText" />

    <item android:id="@+id/log_in"
        android:icon="@drawable/ic_account_box_black_48dp"
        android:title="Log In"
        tools:ignore="HardcodedText"/>

    <item
        android:id="@+id/register"
        android:icon="@drawable/reg_black_48dp"
        android:title="Sign Up"
        tools:ignore="HardcodedText"/>

    <item
        android:id="@+id/recent_verified"
        android:icon="@drawable/ic_history_black_48dp"
        android:title="History"
        tools:ignore="HardcodedText" />


    <item
        android:id="@+id/discussion"
        android:icon="@drawable/ic_forum_black_48dp"
        android:title="Ulema's Discussion"
        tools:ignore="HardcodedText" />

    <item
        android:id="@+id/notifications"
        android:icon="@drawable/ic_notifications_black_48dp"
        android:title="Notifications"
        tools:ignore="HardcodedText" />

    <item
        android:id="@+id/contact_us"
        android:icon="@drawable/ic_contacts_black_48dp"
        android:title="Contact Us"
        tools:ignore="HardcodedText" />


    <item
        android:id="@+id/settings"
        android:icon="@drawable/ic_settings_black_48dp"
        android:title="Settings"
        tools:ignore="HardcodedText" />
    <item
        android:id="@+id/report_problem"
        android:icon="@drawable/ic_report_black_48dp"
        android:title="Report A Problem"
        tools:ignore="HardcodedText" />

    <item
        android:id="@+id/log_out"
        android:icon="@drawable/product_5"
        android:title="@string/logout"
        android:visible="false" />
</group>

activity_registration.drawer

same as acitvity_login.drawer

試試這個代碼

private Menu menu;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    this.menu = menu;
    getMenuInflater().inflate(R.menu.menu_layout, menu);
    return true;
}

private void toogleVisiblityOfMenuItem(boolean isVisible, int itemId){
    menu.findItem(itemId).setVisible(isVisible);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM