Android使用不同的Intent Action启动当前活动

时间:2011-11-21 23:28:56

标签: android

[更新解决方案] 参考链接中的帖子

ViewPager PagerAdapter not updating the View

public void onSomeButtonClicked(View view) { // registered to Button's android:onClick in the layout xml file
    Log.w(TAG,"Some button clicked !!");
    getIntent().setAction(IntentManager.Intents.ACTION_SPAWN_LIST_BY_SOMETHING);

    mViewPager.getAdapter().notifyDataSetChanged();
}

 // And inside my PagerAdapter
    @Override
    public int getItemPosition(Object object) {
        return 0;
    }

修正了我的所有问题,我只使用了Intent.setAction()。

[更新到帖子以下]

我的问题是我的主要活动中有一个ViewPager PagerAdapter。单击3个按钮之一时,将触发任何特定意图(我使用意图,我可能只使用状态变量,只是我传递了一些具有意图的Uri)。会发生什么是。,我做

public void onSomeButtonClicked(View view) { // registered to Button's android:onClick in the layout xml file
    Log.w(TAG,"Some button clicked !!");
    getIntent().setAction(IntentManager.Intents.ACTION_SPAWN_LIST_BY_SOMETHING);

    mViewPager.getAdapter().notifyDataSetChanged();
}

这就是为什么我猜测也许我应该再次使用相同的Activity上的新Intent Action来执行startActivity。

生成一个新的Activity,我将不得不重新绘制布局中的每个其他视图,这些视图基本上是相同的代码,大部分都在当前活动中。

这里有什么建议吗?请帮忙

[原帖]

我的主要活动中有一个PagerAdapter和3个按钮。此活动从Main Launcher输入。

当我按下任何一个按钮时,意图动作就会改变。

我的问题:

  1. 更改的Intent操作反映了ViewPager中的某些更改视图, does_not 生成了一个新的Activity,只更新了视图。
  2. 我应该采取什么方法来完成这项任务?

    我可以使用startActivity()启动currentActivity,并在按钮点击时启动不同的Intent操作吗?

    或者在android中有没有其他有效的方法来做到这一点?

    [不需要代码,只需解释逻辑/方法就足够了]

    提前致谢

2 个答案:

答案 0 :(得分:1)

如果您说您尝试使用startActivity再次启动相同的活动,并且它无法正常工作,那可能是因为您在Android清单中设置了类似singleTop的内容。

如果您在询问是否应该使用意图来更改活动的状态,那么答案就是“它取决于”。如果用户希望后退按钮将您的应用程序恢复到之前的状态(而不是返回主屏幕),那么它可能是您的不错选择。如果是这种情况,我会问为什么不做两个不同的活动?否则,只需按照Dan S的建议进行操作,并在用户与之交互时更新您的活动状态。

答案 1 :(得分:1)

您始终可以使用onNewIntent()挂钩。在你的活动中做这样的事情:

protected void onNewIntent(Intent intent){
  //change your activity based on the new intent
}

确保在清单中将活动设置为singleTop。现在,只要调用startActivity,就会执行onNewIntent()。另请注意,根据文档:

  

请注意,getIntent()仍会返回原始的Intent。您可以使用setIntent(Intent)将其更新为此新Intent。