我有一个应用程序启动Splash activity screen
5 秒然后打开Login activity screen
,然后在输入正确的用户名和密码后打开,Menu activity (listActivity)
然后每行单击打开MyCity activity
。
更新:
我想要得到的是:无论您在我的应用程序中的哪个位置,并且您出于任何原因离开我的应用程序,不仅是在您按下主页按钮时,而且例如:
您按主页按钮检查另一个应用程序然后想返回我的应用程序。
你有通知在 whatsup 或电子邮件上显示新消息,你打开你的 whatsup 或打开电子邮件,然后返回我的应用程序。
3-你离开你的手机一段时间然后你想再次检查我的应用程序。
4-您按电源按钮关闭手机(锁定屏幕),然后打开锁并想要返回我的应用程序。
我的意思是,任何时候您出于任何原因离开我的应用程序,但不按返回按钮,这将退出整个应用程序然后想要再次返回到我的应用程序,必须向您打开登录屏幕以重新输入您的用户名和密码。
我呼吁finish();
启动 Splash 活动和 Login 活动。
我试过:android:clearTaskOnLaunch="true"
在清单中的登录活动中,但它没有。
任何建议将被认真考虑,
请编写完整的工作代码。
登录活动:
public class Login extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
Button b = (Button) findViewById(R.id.loginbutton);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText username = (EditText) findViewById(R.id.login);
EditText password = (EditText) findViewById(R.id.password);
if(username.getText().toString().length() > 0 && password.getText().
toString().length() > 0 ) {
if(username.getText().toString().equals("test") && password.getText().
toString().equals("test")) {
Intent intent = new Intent(Login.this, Menu.class);
startActivity(intent);
finish(); }
} }
}); } }
菜单活动:
public class Menu extends ListActivity {
String classes[] = { "City1", "City2", "City3", "City4", "City5"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this,
android.R.layout.simple_list_item_1, classes));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String cheese = classes[position];
try {
Class ourClass = Class.forName("com.test.demo.MyCity");
Intent ourIntent = new Intent(Menu.this, ourClass);
ourIntent.putExtra("cheese", cheese);
startActivity(ourIntent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}}
我的城市活动:
public class MyCity extends Activity {
TextView tv1;
String city;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.city);
initializeTextViews();}
private void initializeTextViews() {
tv1=(TextView)findViewById(R.id.city_tv);
city=getIntent().getStringExtra("cheese");
if(city.equalsIgnoreCase("City1")){
tv1.setText(Html.fromHtml(getString(R.string.city1)));}
else if(city.equalsIgnoreCase("City2")){
tv1.setText(Html.fromHtml(getString(R.string.city2)));}
else if(city.equalsIgnoreCase("City3")){
tv1.setText(Html.fromHtml(getString(R.string.city3)));}
else if(city.equalsIgnoreCase("City4")){
tv1.setText(Html.fromHtml(getString(R.string.city4)));}
else if(city.equalsIgnoreCase("City5")){
tv1.setText(Html.fromHtml(getString(R.string.city5)));}
}}
我的清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.demo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Splash"
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=".Login"
android:label="@string/app_name"
android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="com.test.demo.LOGIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".Menu"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.test.demo.MENU" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".MyCity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.test.demo.MYCITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
第二次更新:我达到了我想要的一半,但仍有一些步骤我无法实现,解释如下:
通过申请 android:clearTaskOnLaunch="true"
Splash 活动,
并防止菜单活动上的后退按钮行为:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
} }
所以现在当按下主页按钮离开我的应用程序然后返回我的应用程序时:
直接进入登录活动。
但现在的主要目标是:
如果 :
离开手机时屏幕锁定,或轻按电源按钮锁定手机。
或者
来自通知的已打开消息
或者
来自通知的已打开电子邮件
或者
你有CALL并回答它,
然后返回我的应用程序,它不会进入登录活动,但您将返回您之前的页面。
任何建议,谢谢。
泰德更新:
我使用了另一个代码来覆盖主页按钮并控制后退按钮而不是应用:android:clearTaskOnLaunch="true"
到清单中的 Splash 活动,只需将向下代码应用于菜单活动:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;}
else if (keyCode == KeyEvent.KEYCODE_HOME) {
Intent i=new Intent(Menu.this,Login.class);
startActivity(i);
finish();
return true;}
return super.onKeyDown(keyCode, event);}