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