[更新解决方案] 参考链接中的帖子
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输入。
当我按下任何一个按钮时,意图动作就会改变。
我的问题:
我应该采取什么方法来完成这项任务?
我可以使用startActivity()启动currentActivity,并在按钮点击时启动不同的Intent操作吗?
或者在android中有没有其他有效的方法来做到这一点?
[不需要代码,只需解释逻辑/方法就足够了]
提前致谢
答案 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。