如何让我的活动是开始活动?

时间:2012-09-20 10:08:12

标签: android android-manifest zxing

我下载了zxing项目,并使用按钮创建了一个简单的活动。当按下按钮时,这个简单的活动应该开始zxing项目。 现在我的问题是:我希望这个简单的活动与按钮成为开始活动 我在清单文件中创建了以下标记:

开始活动:                                                                          

并且下载的zxing项目有一个始终在开头启动的活动,它有以下清单文件:

<activity android:name=".CaptureActivity"
          android:screenOrientation="landscape"
          android:configChanges="orientation|keyboardHidden"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
          android:windowSoftInputMode="stateAlwaysHidden">
  <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
  </intent-filter>
  <intent-filter>
    <action android:name="com.google.zxing.client.android.SCAN"/>
    <category android:name="android.intent.category.DEFAULT"/>
  </intent-filter>
  <!-- Allow web apps to launch Barcode Scanner by linking to http://zxing.appspot.com/scan. -->
  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="http" android:host="zxing.appspot.com" android:path="/scan"/>
  </intent-filter>
  <!-- We also support a Google Product Search URL. -->
  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="http" android:host="www.google.com" android:path="/m/products
    /scan"/>
  </intent-filter>
  <!-- And the UK version. -->
  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="http" android:host="www.google.co.uk" android:path="/m
    /products/scan"/>
  </intent-filter>
</activity>

将我的活动更改为启动器后的Logcat输出:

09-20 12:39:57.527: E/AndroidRuntime(22519): FATAL EXCEPTION: main
09-20 12:39:57.527: E/AndroidRuntime(22519): java.lang.RuntimeException: Unable to 
resume activity 
{com.google.zxing.client.android/com.google.zxing.client.android.Test}: 
java.lang.NullPointerException
09-20 12:39:57.527: E/AndroidRuntime(22519):    at     
android.app.ActivityThread.performResumeActivity(ActivityThread.java:2456)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2484)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1998)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
android.app.ActivityThread.access$600(ActivityThread.java:127)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
android.os.Handler.dispatchMessage(Handler.java:99)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
android.os.Looper.loop(Looper.java:137)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
android.app.ActivityThread.main(ActivityThread.java:4507)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
java.lang.reflect.Method.invokeNative(Native Method)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at  
java.lang.reflect.Method.invoke(Method.java:511)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at   
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at 
dalvik.system.NativeStart.main(Native Method)
09-20 12:39:57.527: E/AndroidRuntime(22519): Caused by: java.lang.NullPointerException
09-20 12:39:57.527: E/AndroidRuntime(22519):    at   
com.google.zxing.client.android.CaptureActivity.onResume(CaptureActivity.java:178)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at   
android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1157)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at  
android.app.Activity.performResume(Activity.java:4539)
09-20 12:39:57.527: E/AndroidRuntime(22519):    at   
android.app.ActivityThread.performResumeActivity(ActivityThread.java:2446)

我只想知道如何使我创建的简单活动成为开始活动。换句话说,将简单活动的标签放在zxing项目的清单文件中的哪个位置?

4 个答案:

答案 0 :(得分:0)

你所要做的就是改变:

<activity android:name="Leeder"

为:

<activity android:name="LeederTitleScreen"

如果您希望您的标题屏幕通过startActivity()启动游戏,您还需要在清单中声明您的Leeder活动。

编辑:是的,您需要该部分。它告诉系统您的活动将响应哪些隐含意图。所以在你的清单中,intent过滤器告诉系统它将响应android.intent.category.LAUNCHER intent,这是Android在启动应用程序时调度的(即它告诉Android在应用程序启动时启动Activity) )。

以下是简要说明:http://developer.android.com/guide/components/intents-filters.html

答案 1 :(得分:0)

你的问题很简单。

您只需要从menifest文件中的捕获活动中删除intent过滤器,并将其放入您已经执行过的活动中。因为Launcher活动应该是一个项目中的一个,所以如果你想用你的活动启动应用程序,那么你应该使用intent过滤器将你的类作为启发器文件中的启动器活动。

然后它将从您的活动开始。

答案 2 :(得分:0)

使用LAUNCHER

这样简单
   <activity
            android:name=".YourActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

答案 3 :(得分:0)

我想你应该删除

<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
  </intent-filter>

来自清单文件中的CaptureActivity。 并简单地添加

<activity
        android:name=".Test"
        android:screenOrientation="portrait"
        android:configChanges = "keyboardHidden|orientation"
        android:label="@string/app_name01" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

在您显示的代码部分之后。我没试过。让我知道它是否有效?