我是 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);
}
});
然后,我通过方法检索结果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)); ...
这是它应该做的方式吗?或者,还有更好的方法?例如,我想返回一个 Type 而不是使用属性包。这有很多优点(例如更容易重构、编译时检查等)
粗略地说,我希望看到类似(伪代码)的内容:
startActivityForResult<MyResult>(authActivity, new OnResultHandler() {
@Override
void HandleResult( MyResult r )
{
....
}
});
很想听听 Android 专家的想法!