我下载了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项目的清单文件中的哪个位置?
答案 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>
在您显示的代码部分之后。我没试过。让我知道它是否有效?