簡體   English   中英

Android-當我以有影響的意圖調用startActivity()時,APP崩潰

[英]Android - APP crashes when I call startActivity() with an impact intent

 <activity android:name=".Fisrt" android:label="@string/title_activity_first" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Second" android:label="@string/title_activity_second" > <intent-filter> <action android:name="com.example.MusicTest.First"/> <category android:name="ANDROID.INTENT.CATEGORY.DEFAULT"/> </intent-filter> </activity> 

在我的First.java中,代碼如下。

public final static String MY_ACTION = "com.example.MusicTest.First";

public void change(View view) {
    Intent intent = new Intent(First.MY_ACTION);
    startActivity(intent);
}

問題是每次我調用change()時,APP都會崩潰。 任何輸入都會有所幫助。 謝謝。

/ 補充 / 日志如下:

08-10 11:59:08.873 17509-17509 / com.example.root.musictest W / dalvikvm:threadid = 1:線程以未捕獲的異常退出(group = 0x41ffcd58)08-10 11:59:08.873 17509-17509 / com .example.root.musictest E / AndroidRuntime致命異常:主進程:com.example.root.musictest,PID:17509 java.lang.IllegalStateException:無法執行android.view.View $ 1.onClick( android.view.View.performClick(View.java:4444)上的View.java:3829)android.os.Handler.handleCallback(Handler.java)上android.view.View $ PerformClick.run(View.java:18457)上的View.java:3829) Java上的android.os.Handler.dispatchMessage(Handler.java:95):733)(java.android.app.ActivityThread.main(ActivityThread.java:5034)上的android.os.Looper.loop(Looper.java:136) .lang.reflect.Method.invokeNative(本地方法)(位於java.lang.reflect.Method.invoke(Method.java:515)位於com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:807)在dalvik.syste的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:623) m.NativeStart.main(Native Method)由:java.lang.reflect.Method.invoke處的java.lang.reflect.InvocationTargetException(java.lang.reflect.Method.invokeNative(Native方法)(Method.java:515)在android.view.View $ 1.onClick(View.java:3824)在android.view.View.performClick(View.java:4444)在android.view.View $ PerformClick.run(View.java:18457) .os.Handler.handleCallback(Handler.java:733)位於android.os.Handler.dispatchMessage(Handler.java:95)位於android.os.Looper.loop(Looper.java:136)位於android.app.ActivityThread。 com.android.internal.os.ZygoteInit $處java.lang.reflect.Method.invoke(Method.java:515)處的main(ActivityThread.java:5034) MethodAndArgsCaller.run(ZygoteInit.java:807)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:623)在dalvik.system.NativeStart.main(本機方法),原因:android.content.ActivityNotFoundException:找不到在Andro處處理Intent {act = com.example.MusicTest.First}的活動 android.app.Activity.startActivityForResult(Activity.java:3439)上的android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)上的id.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632)在android.app.Activity上android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:820)的.startActivityForResult(Activity.java:3400)android.app.Activity的android.app.Activity.startActivity(Activity.java:3642)。位於com.example.root.musictest.First.change(First.java:46)處的startActivity(Activity.java:3610)位於java.lang.reflect.Method處的java.lang.reflect.Method.invokeNative(Native Method)處。在android.view.View $ PerformClick.run(在android.view.View $ 1.onClick(View.java:3824)在android.view.View.performClick(View.java:4444)調用(Method.java:515) View.java:18457)android.os.Handler.handleCallback(Handler.java:733)android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(Looper.java:136) ),位於android.app.ActivityThread.main( ActivityThread.java:5034),位於java.lang.reflect.Method.invokeNative(原生方法),位於com.android.internal.os.ZygoteInit $ MethodAndArgsCaller處的java.lang.reflect.Method.invoke(Method.java:515)。在dalvik.system.NativeStart.main上在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:623)上運行(ZygoteInit.java:807)(本機方法)

將清單文件更改為:

<activity
  android:name=".Fisrt"
  android:label="@string/title_activity_first" >
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
<activity
  android:name=".Second"
  android:label="@string/title_activity_second" >
</activity>

要啟動Second活動,請嘗試以下代碼:

Intent intent = new Intent(First.this, Second.class);
startActivity(intent);

請嘗試以下代碼來設置操作。

Intent intent = new Intent();
intent.setAction(First.MY_ACTION);
startActivity(intent);

此后將啟動第二項活動。

當然,您也可以添加

intent.addCategory("android.intent.category.DEFAULT");

用於設置您在AndroidManifest中為第二活動設置的類別。

清單中有拼寫錯誤

<activity
  android:name=".Fisrt"

應該

android:name=".First"

因為您的MY_ACTION字符串是First

public final static String MY_ACTION = "com.example.MusicTest.First";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM