0
我如何获取最终用户到达任何活动的路径。Android - 如何获得活动路径
所以如果用户访问了活动A,B,C ..然后在Activity c中,我将能够获得像这样的信息“A/B/C”。同样,如果用户直接将路径带到D,F,则在活动F中我将具有“D/F”的路径信息。
我如何获取最终用户到达任何活动的路径。Android - 如何获得活动路径
所以如果用户访问了活动A,B,C ..然后在Activity c中,我将能够获得像这样的信息“A/B/C”。同样,如果用户直接将路径带到D,F,则在活动F中我将具有“D/F”的路径信息。
每当你开始一个活动,你可以传递一个字符串额外的说明你正在谈论的路径。一个简单的例子可能是在一个抽象的基本活动类的这个方法,并使用它时,开始一个新的活动:
public <T extends Activity> void startActivityWithPathInfo(Class<T> activityClass) {
String path = getIntent().getStringExtra("path");
path = path == null ? "" : path += "/";
path += this.getClass().getSimpleName();
Intent i = new Intent(this, activityClass);
i.putExtra("path", path);
startActivity(i);
}
然后在每一个活动,你可以只使用获得当前路径:
String path = getIntent().getStringExtra("path");
编辑:根据您的要求,最好将其分解为“getPath()”方法和“startActivityWithPathInfo(Class)”方法。可能是您更容易找回在每个活动:)
编辑2的路径:按照意见,这里是更新后的代码:
public abstract BaseActivity extends Activity {
private static final String EXTRA_PATH = "path";
private String path;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
path = getPath();
} else {
path = savedInstanceState.getString(EXTRA_PATH, "");
}
}
@Override protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(EXTRA_PATH, path);
}
public String getPath() {
if (path == null) {
path = getIntent().getStringExtra(EXTRA_PATH);
path = path == null ? "" : path += "/";
path += this.getClass().getSimpleName();
}
return path;
}
public <T extends Activity> void startActivityWithPathInfo(Class<T> activityClass) {
Intent i = new Intent(this, activityClass);
i.putExtra(EXTRA_PATH, getPath());
startActivity(i);
}
}
但在你的例子,如果我打了会发生什么后退按钮反向,那么我不会得到正确的路径 – j2emanue 2014-09-29 05:15:01
它仍然是正确的道路。每个活动都保持对启动它的Intent的引用。但是,您只是让我意识到,如果系统在后台处于活动状态时会终止此操作,则此操作将不起作用。我会发布一个修改来解决这个问题。 – 2014-09-29 07:34:02
非常好。欠你。这个代码很棒。你的辉煌。 – j2emanue 2014-09-29 17:19:52