吃不完兜着走

导航

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",我就按他们说的那样做,哈哈解决问题。到此为止,如有什么问题请各位道友多多指教

posted on 2012-07-13 12:50  吃不完兜着走  阅读(2479)  评论(0)    收藏  举报