android:在多动作按钮中更改文本

时间:2017-07-11 04:07:25

标签: android button android-activity

拥有一个Android应用程序,如果用户创建了一个帐户,他们会点击"创建一个帐户"按钮,它将他们带到第二个活动(DriverDetailsActivity)来填写表格。表单完成后,用户将点击" UPDATE"按钮,它将返回到LoginActivity和"创建一个帐户"文字应改为"注册"但它没有用。

我提供的代码不起作用。

enter image description here

LoginActivity:

final Button mRegisterButton = (Button)findViewById(R.id.email_registration_button);
    mRegisterButton.setTag(1);
    mRegisterButton.setText("Create an Account");
    mRegisterButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick (View v) {
            final int status = (Integer) v.getTag();
            if (status == 1) {
                Intent intent = new Intent(getBaseContext(), DriverDetailsActivity.class);
                startActivity(intent);
                mRegisterButton.setText("Register");
            }
        }
    });

DriverDetailsActivity(第二个活动)

        // Once completed all fields, user is sent back to DriverLoginActivity
    update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(DriverDetailsActivity.this, DriverLoginActivity.class);
            startActivity(intent);
        }
    });

知道我怎么能这样做吗?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

我们有startActivityForResult(intent,requestCode)

,而不是startActivity

如果您想要参加活动并获得一些结果,则特别使用此方法。

像这样使用:

在活动A中

startActivityForResult(intent,100);

在活动B中,当您完成任务时,您所做的就是

setResult(RESULT_OK);
finish();

在活动A中,您覆盖此方法:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 100 && resultCode == RESULT_OK) {
        //Do your work here
    }
}

显然你也可以通过setResult(RESULT_CANCELLED)通知结果不正确。

希望这有帮助。

答案 1 :(得分:0)

为此,您可以使用startActivityForResult()从DriverDetailsActivity获取结果并更新onActivityResult中的文本。

有关详细信息,请查看这些链接

https://developer.android.com/training/basics/intents/result.html

How to use StartActivityForResult()

答案 2 :(得分:0)

试试这个

<强> LoginActivity:

if( getIntent().getExtras() != null) {
            btnOne.setText(getIntent().getStringExtra("BACK"));
        }else{
            btnOne.setText("Create");
        }


        btnOne.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(btnOne.getText().toString().equalsIgnoreCase("Create")){
                    Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                    startActivity(intent);
                }else{
                    //do registration
                }
            }
        });

DriverDetailsActivity(第二个活动)

btnTwo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    Intent intent = new Intent(SecondActivity.this,MainActivity.class);
                    intent.putExtra("BACK","Register");
                    startActivity(intent);
            }
        });