我是android新手,在開發中遇到問題。首先我的應用程序從一個屏幕(第一個屏幕)開始。如何更改初始屏幕?
然後它會移動到另一個屏幕(第二個屏幕)。我的要求是:當我重新啓動我的應用程序時,它應該從第二個屏幕開始。
如果有人知道如何處理這個問題,請告訴我。
我是android新手,在開發中遇到問題。首先我的應用程序從一個屏幕(第一個屏幕)開始。如何更改初始屏幕?
然後它會移動到另一個屏幕(第二個屏幕)。我的要求是:當我重新啓動我的應用程序時,它應該從第二個屏幕開始。
如果有人知道如何處理這個問題,請告訴我。
您需要將標誌存儲在第一個屏幕出現的地方。我認爲做這件事最好的地方是在你的應用程序共享首選項中。 (請參閱指南主題Data Storage)
然後您需要使用該標誌。這是一種方法。將第二個屏幕設爲默認啓動活動。在onCreate方法中,檢查標誌是否已設置,如果沒有,則使用請求代碼> = 0調用startActivityForResult
作爲第一個屏幕。不管標誌的值如何,通常爲第二個活動完成onCreate
。
您的第一項活動是在其onCreate
方法中設置成功的結果代碼。然後,返回第二個活動,覆蓋onActivityResult
,以便當它收到請求代碼的成功結果時,它將設置標誌。
這是有效的,因爲如果您從第二個活動中調用startActivityForResult
,屏幕將顯示第一個活動,而不是第一個閃爍第二個活動。另外,如果第一個活動由於某種原因而崩潰,第二個活動將不會收到成功結果代碼,並且該標誌將不會被設置,因此用戶仍然會看到第一個活動。
下面是一些示例代碼:
第一項活動:
private static final String PREFS_NAME = "prefs";
private static final String KEY_SHOW = "show1";
private static final int REQUEST_1 = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
if (settings.getBoolean(KEY_SHOW, true)) {
Intent intent = new Intent(this, Activity1.class);
startActivityForResult(intent, REQUEST_1);
}
. . . // the rest of onCreate as normal
}
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_1 && resultCode == RESULT_SUCCESS) {
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(KEY_SHOW, true);
editor.commit();
}
}
次活動:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setResult(RESULT_SUCCESS);
. . .
}
您好基蘭我想你不希望在開始你的第一個畫面每次。因此,您必須在第一次顯示第一個屏幕時設置SharedPreferences中的值。那麼每次你必須檢查sharedPreferences中是否有任何值時?如果有任何值,則開始第二屏幕otherzise第一屏幕。
我試過這個,它工作。
編輯: -
我用這個在我的應用程序,我的要求是我不得不打開註冊屏幕只有一次/只第一次。然後在啓動畫面我寫的,
package com.z.z.z;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class SplashActivity extends Activity
{
RelativeLayout lerSplash;
SharedPreferences sharedPreferences;
private String strUName_pref;
private String TAG = "SplashActivity";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Log.d(TAG, "in onCreate");
lerSplash = (RelativeLayout)findViewById(R.id.lerSplash);
Handler handler = new Handler();
handler.removeCallbacks(runnable);
handler.postDelayed(runnable, 3000L);
sharedPreferences = this.getSharedPreferences("PREFERENCE_NAME",MODE_WORLD_READABLE);
}
Runnable runnable = new Runnable()
{
public void run()
{
strUName_pref = sharedPreferences.getString("PREFERENCE_NAME", null);
if(strUName_pref != null)
{
Intent intent = new Intent(SplashActivity.this,MainTabActivity.class);
startActivity(intent);
finish();
}
else
{
Intent intent = new Intent(SplashActivity.this,RegistrationActivity.class);
startActivity(intent);
finish();
}
}
};
}
然後在RegistrationActivity我寫
package com.z.z.z;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class RegistrationActivity extends Activity
{
SharedPreferences sharedPreferences;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.registration);
Log.d(TAG, "in onCreate");
sharedPreferences = this.getSharedPreferences("PREFERENCE_NAME",MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = sharedPrefs.edit();
prefsEditor.putString("SharedPreferenceValue", "YOUR_VALUE_WHICH_YOU_WANT_TO_PUT");
prefsEditor.commit();
}
}
你想要什麼到底是什麼?
如果您希望每次從應用程序退出時啓動應用程序,則必須在SharedPreference中存儲值並在每個屏幕中對其進行升級,並在Restart/run上檢查該值並啓動該活動。
否則您還有另一個選項,由我的朋友張貼上面...嘗試一個。
在清單中設置默認活動後,無法更改默認活動。你可以做的是在應用程序的開始處有一個默認的活動(可能像一個啓動畫面)。 在活動1在默認的活動有此代碼現在
private SharedPreferences appPreferences = getSharedPreferences("user", MODE_PRIVATE);
final SharedPreferences.Editor editor = appPreferences.edit();
editor.putBoolean("flag", true);
editor.commit();
if(editor.getBoolean("flag",false))
{
startActivity(new Intent(DefaultActivity.this,Activity1.class));
}
else
{
startActivity(new Intent(DefaultActivity.this,Activity2.class));
}
使這個布爾值false
使用份額的偏好。 1.從共享的pref中獲取boolean var,並檢查它是true還是false。 2.如果它是假的,則顯示第一個屏幕,將變量設置爲true並將變量保存在共享首選項中。否則顯示第二個屏幕
我有這個相同的問題。我對Android開發非常陌生 - 所以我的答案可能有缺陷,但這對我來說很有用。
轉到您的AndroidManafest.xml文件。您的活動定義部分應該是這個樣子:
...
<activity
android:name="com.example.test.OriginalFirstScreen"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.test.NewFirstScreen"
android:label="@string/title_activity_new_first_screen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
我刪除從OldFirstScreen活動定義標籤和左/中NewFristScreen定義添加它。這個伎倆。見下 -
...
<activity
android:name="com.example.test.OriginalFirstScreen"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity
android:name="com.example.test.NewFirstScreen"
android:label="@string/title_activity_new_first_screen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
重新啓動的條件是什麼? – 2012-01-13 05:37:15
再次運行我的應用程序 – kiran 2012-01-13 05:39:38