当前位置: 首页 > 知识库问答 >
问题:

Android:如何使用**volley**在导航视图中隐藏登录和注册选项以及已启用的注销选项

段干华晖
2023-03-14

登录和注册的过程是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中,它显示错误或成功事件

注册.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;
}
 <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

共有1个答案

糜博远
2023-03-14

请尝试此代码

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);
}
 类似资料:
  • 在我的ionic应用程序中,注册和登录工作正常,数据保存在Firebase中,但我不知道当用户登录或注销时如何在主页中隐藏或显示内容。 在我的身份验证中。服务ts,用户登录时设置uid(用户ID) 家页html 所以我想在authentication.service.ts中使用该信息,并且仅在用户未登录时在我的home.page.html中显示注册按钮。

  • 我正在开发一个基于Spring Boot的web应用程序,主页包含一个带有登录和注册链接的boostrap navbar。 一旦用户登录(通过单击从主页登录链接),他们将再次被重定向到主页(除非他们在spring security启动A&A之前访问任何其他链接)。在重定向,我想隐藏登录和注册链接从navbar和显示注销链接在他们的地方。因为我想在应用程序的所有页面中插入navbar。 我想知道什么

  • 问题内容: 我们正在使用Spring 3开发RESTful Web服务,我们需要具有登录和注销功能,例如和。会话应存储在上下文中,直到会话超时或注销以允许使用其他Web服务。没有会话信息的任何访问Web服务的请求都应被拒绝。寻找这种情况的最新解决方案。 我实际上是在复活这里Spring Security 3以编程方式登录的问题,仍然无法正确回答。请同时在web.xml中指定所需的更改。 问题答案:

  • 我的应用程序有问题。我有一个底部导航视图,包含3个不同的片段,尽管目前只有主要的内容。当我试图从左侧的两个片段中的一个移动到主视图时,问题就出现了,即当底部导航视图被隐藏时。我附上了主代码。 PD:我有25.3.1版本的所有库(如果有用的话)。 感谢您的关注。 activity\u main。xml 主要活动。Java语言 我也给你添加了两张图片。 Ofertas片段 主片段

  • 问题内容: 我创建了一个Login页面以及许多其他页面,其中包含用于检查会话的代码。如果用户没有会话,则所有页面将重新加载并重定向到注销页面。每三秒钟调用一次此脚本。 我编写的代码可以正常工作,但我想以另一种方式实现它。用户注销后,所有打开的选项卡都会重新加载/刷新,从而导致用户注销。那可能吗? sessioncheck.php : 此代码在每个页脚中: 问题答案: 当ajax有用时 在以下情况下

  • 我在一个数据库表中有一个GCM注册用户列表及其相应的注册ID,我实际上想在用户从表中删除时注销该用户。我在Stackoverflow中发现了很多示例,但大多数示例都基于旧的GCMRegistarAPI,现在已经不推荐使用了。我正在使用GoogleCloudMessaging API,并通过以下方法注册用户: 我有一个管理员应用程序,它充当第三方应用程序服务器,因为它向所有用户推送通知。我想注销一个