在 Android 中更改多操作按钮中的文本
Posted
技术标签:
【中文标题】在 Android 中更改多操作按钮中的文本【英文标题】:Change text in multi action buttons in Android 【发布时间】:2017-12-14 23:09:54 【问题描述】:我有一个 android 应用程序,如果用户创建一个帐户,他们点击“创建一个帐户”按钮,它会将他们带到第二个活动 (DriverDetailsActivity) 以填写表格。表单完成后,用户将单击“更新”按钮,这会将他们返回到 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);
);
我该怎么做?
【问题讨论】:
您在 onCreate 或 onResume 的 LoginActivity 工作? 【参考方案1】:我们用 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) 来通知结果不正确。
希望这会有所帮助。
【讨论】:
只是为了澄清我将这些放在正确的区域:startActivityForResult(intent, 100) 正在替换 startActivity(intent)。 setResult(...) 在 Intent intent ...?? 之前 是的。 100 实际上是一个请求代码,可以更改为任何值。然后在 onActivityResult 中,如果它来自我们发送的相同请求代码,我们会匹配它。 完美。!!编码愉快。 不,不要再次开始活动。从活动中删除 Intent 意图 b 让我们continue this discussion in chat。【参考方案2】:为此,您可以使用 startActivityForResult() 从 DriverDetailsActivity 获取结果并更新 onActivityResult 中的文本。
欲了解更多信息,请查看这些链接
https://developer.android.com/training/basics/intents/result.html
How to use StartActivityForResult()
【讨论】:
【参考方案3】:试试这个
登录活动:
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);
);
【讨论】:
阿诺德布朗 这不起作用。一直给我一个应用程序已停止的错误。我将 getIntent .. (LoginActivity) 放在 onCreate 的 setContentView 下,它给出了错误。 全部修复。无论如何,谢谢以上是关于在 Android 中更改多操作按钮中的文本的主要内容,如果未能解决你的问题,请参考以下文章