您的位置:首页 > 移动开发 > Android开发

Android中关于多入口点的问题

2012-07-13 12:50 281 查看
昨天到一家公司去android方面的开发,一去的时候他们就要我改一个bug,就是关于多入口点的问题,至于什么是多入口点稍后给你讲解。具体的我在我自已写的一个小demo里面提到的。

新建一个android工程项目,添加两个activity的子类具体的如图:



TestAgainActivity中的源码如下:

package com.huawei;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class TestAgainActivity extends Activity {
private ImageView view1;
private ImageView view2;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view1=(ImageView)this.findViewById(R.id.view1);
view2=(ImageView)this.findViewById(R.id.view2);
view1.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(TestAgainActivity.this,FirstActivity.class);
startActivity(intent);
}

});
view2.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(TestAgainActivity.this,SecondActivity.class);
startActivity(intent);
}

});
}
}


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",我就按他们说的那样做,哈哈解决问题。到此为止,如有什么问题请各位道友多多指教
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: