Eug*_*ace 5 android android-activity
我是 Android 新手,所以我可能会遗漏一些东西。我正在编写一个“登录”活动。Activity 返回安全令牌供应用程序稍后使用。
一切正常。我不太喜欢的是用于返回结果的协议:
本质上,我的登录活动是这样使用的:
...
login = (Button) findViewById(R.id.login);
login.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent authActivity = new Intent(context,
AuthenticationActivity.class);
authActivity.putExtra("clientId","MY CLIENT ID");
startActivityForResult(authActivity, AuthenticationActivity.AUTH_REQUEST_COMPLETE);
}
});
Run Code Online (Sandbox Code Playgroud)
然后,我通过onActivityResult方法检索结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent authActivityResult) {
super.onActivityResult(requestCode, resultCode, authActivityResult);
switch(requestCode)
{
case AuthenticationActivity.AUTH_REQUEST_COMPLETE:
if(resultCode==RESULT_OK)
{
access_token =authActivityResult.getStringExtra(AuthenticationActivity.ACCESS_TOKEN)); ...
Run Code Online (Sandbox Code Playgroud)
这是应该的方式吗?或者,还有更好的方法?例如,我想返回一个类型而不是使用属性包。这有很多优点(例如更容易重构、编译时检查等)
粗略地说,我想看到类似(伪代码)的东西:
startActivityForResult<MyResult>(authActivity, new OnResultHandler() {
@Override
void HandleResult( MyResult r )
{
....
}
});
Run Code Online (Sandbox Code Playgroud)
很想听听 Android 专家的看法!
我确信我们在 Android 中都会遇到一些我们会以不同方式完成的事情。所有操作系统、编程语言、政治体系、经济体系、宗教等都是如此。
然而,如果你想为 Android 编程,你几乎只能使用现有的东西。
要回答您的问题,您不必使用“属性包”将内容返回到调用活动。您可以将任何您想要的对象作为额外的内容放入返回中Intent,只要它实现Parcelable或Serializable。
例如,假设MyResultImplements Parcelable,您AuthenticationActivity可以返回如下结果:
Intent resultIntent= new Intent();
resultIntent.putExtra(RESULT, myResult);
setResult(RESULT_OK, resultIntent);
finish();
Run Code Online (Sandbox Code Playgroud)
调用活动可以MyResult像这样提取:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent authActivityResult) {
super.onActivityResult(requestCode, resultCode, authActivityResult);
switch(requestCode)
{
case AuthenticationActivity.AUTH_REQUEST_COMPLETE:
if(resultCode==RESULT_OK)
{
MyResult result = authActivityResult.getParcelableExtra(AuthenticationActivity.RESULT));
Run Code Online (Sandbox Code Playgroud)
现在你有了一个MyResult可以做任何你想做的事情的对象。
| 归档时间: |
|
| 查看次数: |
3603 次 |
| 最近记录: |