Android中关于多入口点的问题
昨天到一家公司去android方面的开发,一去的时候他们就要我改一个bug,就是关于多入口点的问题,至于什么是多入口点稍后给你讲解。具体的我在我自已写的一个小demo里面提到的。
新建一个android工程项目,添加两个activity的子类具体的如图:

TestAgainActivity中的源码如下:
1 package com.huawei; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.view.View.OnClickListener; 8 import android.widget.ImageView; 9 10 public class TestAgainActivity extends Activity { 11 private ImageView view1; 12 private ImageView view2; 13 14 /** Called when the activity is first created. */ 15 @Override 16 public void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.main); 19 view1=(ImageView)this.findViewById(R.id.view1); 20 view2=(ImageView)this.findViewById(R.id.view2); 21 view1.setOnClickListener(new OnClickListener(){ 22 23 @Override 24 public void onClick(View v) { 25 // TODO Auto-generated method stub 26 Intent intent=new Intent(TestAgainActivity.this,FirstActivity.class); 27 startActivity(intent); 28 } 29 30 }); 31 view2.setOnClickListener(new OnClickListener(){ 32 33 @Override 34 public void onClick(View v) { 35 // TODO Auto-generated method stub 36 Intent intent=new Intent(TestAgainActivity.this,SecondActivity.class); 37 startActivity(intent); 38 } 39 40 }); 41 } 42 }
FirstActivity中的源码如下:
package com.huawei; import android.app.Activity; import android.os.Bundle; public class FirstActivity extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first); } }
secondActivity中的源码如下:
package com.huawei; import android.app.Activity; import android.os.Bundle; public class SecondActivity extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); } }
Androidmainfest.xml中的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.huawei"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".TestAgainActivity"
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=".FirstActivity" android:icon="@drawable/first">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" android:icon="@drawable/second">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
现在我们讲多入口点。多入口点就是程序的入口有多个,一般情问供下我们的应用程序的入口点只有一个就是
<activity
android:name=".TestAgainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
而我这里有三个和这个型式差不多的,就形成了三个入口点
运行这个应用程序时你会发现会多出三个图标,当然这三个图标就是TestAgainActivity中的列出的二个图标和工程本身的一个图标:
TestAgainActitivy中的图标如下

你运行程序后,会在应用程序中有三个图标
如下:

现在是我遇到的问题我想要的结果是点击TestAgain进入一个是进入到TestAgainActivity中然后按home键退出后再点击另一个图标进入到FirstActivity所在界面中,还有一个进入到SecondActivity中,但是程序的结果是不论你点哪个进入都进的是TestAgainActivity所在界面里,后来在网上找来找去看到一个地方说要在配置文件activity结点那里添加android:launchMode="singleInstance",我就按他们说的那样做,哈哈解决问题。到此为止,如有什么问题请各位道友多多指教
浙公网安备 33010602011771号