【发布时间】:2011-11-09 20:12:28
【问题描述】:
我正在尝试为我的 Android 应用创建应用内帮助屏幕。帮助活动由用户从选项菜单中选择帮助创建。第一个屏幕显示帮助类别列表。
当用户点击一个类别时,我希望他们被带到一个显示该类别详细信息的新屏幕。
我希望保留后退按钮功能,并且我知道(我认为!)如果我为每个类别的详细信息设置一个新活动,它会很好地工作。
但是,每个子类别都有一个活动是否矫枉过正?
【问题讨论】:
我正在尝试为我的 Android 应用创建应用内帮助屏幕。帮助活动由用户从选项菜单中选择帮助创建。第一个屏幕显示帮助类别列表。
当用户点击一个类别时,我希望他们被带到一个显示该类别详细信息的新屏幕。
我希望保留后退按钮功能,并且我知道(我认为!)如果我为每个类别的详细信息设置一个新活动,它会很好地工作。
但是,每个子类别都有一个活动是否矫枉过正?
【问题讨论】:
为什么没有一个显示子类别的活动,SubCategoryActivity。当你开始这个活动时,传入一个额外的参数,让它知道要显示哪个子类别(一个 int 或一个字符串)。
如果所有这些类别的用户界面都彼此非常不同,则可能无法正常工作。
【讨论】:
绝对是矫枉过正,除非你真的想要关于活动变化的整洁动画。 FrameLayout 是你的朋友。
【讨论】:
也许您可以对子类别使用对话框而不是活动?如果没有,请寻求 sgarman 的解决方案。创建一个“HelpActivity”,在启动 Intent 时将帮助内容作为附加内容传递。
【讨论】:
如果你想重用同一个activity,最好的办法是:1)创建一个activity(比如HelpActivity)并设计它的布局,比如textview、button等,但不要设置textview的值。
2) 对于 HELP 类别列表中的所有类别,每次都调用 HelpActivity。
3) 使用此代码检查调用活动:创建一个接口并为所有活动分别声明活动常量,例如:
公共接口 ActivityConstants {
public static final int callingACTIVITY1 = 1001;
public static final int callingACTIVITY2 = 1002;
public static final int callingACTIVITY3 = 1003;
} // 然后识别调用活动
int callingActivity=getIntent().getIntExtra("calling-activity", 0);
switch(callingActivity)
{
case ActivityConstants.callingACTIVITY1:
// do your stuff here
// set textview value based on callingACTIVITY1
break;
等等……
3) 如果您想在用户阅读帮助说明后返回调用活动,请使用 super.onBackPressed(); //这将带你回到你的调用活动。
希望这对你有帮助。
【讨论】: