2013-03-22 53 views
1

我有這種情況:我有一個主項目有一個jar文件(一個輔助項目,它提供了一些主要的信息)。我在這個tuto之後創建了jar文件,然後將jar文件添加到/ libs中的主項目中,然後將它添加到Build Path中。我不能從jar文件調用活動

當我致電活動從jar文件中有一個致命異常

這是logcat的

03-22 12:47:09.509: D/AndroidRuntime(13341): Shutting down VM 
03-22 12:47:09.509: W/dalvikvm(13341): threadid=1: thread exiting with uncaught exception (group=0x40018578) 
03-22 12:47:09.529: E/AndroidRuntime(13341): FATAL EXCEPTION: main 
03-22 12:47:09.529: E/AndroidRuntime(13341): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.XXX.YYY/com.XXX.YYY.Subscription}; have you declared this activity in your AndroidManifest.xml? 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1405) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.app.Activity.startActivityForResult(Activity.java:2827) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at com.example.principal.Principal$1.onClick(Principal.java:40) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.view.View.performClick(View.java:2485) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.view.View$PerformClick.run(View.java:9080) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.os.Handler.handleCallback(Handler.java:587) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.os.Handler.dispatchMessage(Handler.java:92) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.os.Looper.loop(Looper.java:130) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at android.app.ActivityThread.main(ActivityThread.java:3687) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at java.lang.reflect.Method.invokeNative(Native Method) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at java.lang.reflect.Method.invoke(Method.java:507) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
03-22 12:47:09.529: E/AndroidRuntime(13341): at dalvik.system.NativeStart.main(Native Method) 

這是我如何調用該活動的主要項目

final Intent intent = new Intent(); 

     Button juego1Btn = (Button) findViewById(R.id.juego1Btn); 

     juego1Btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       /*Intent intent = new Intent(getBaseContext(), Subscription.class); 
       startActivity(intent);*/ 
       intent.setAction(Intent.ACTION_MAIN); 
       intent.setClassName("com.XXX.YYY", "com.XXX.YYY.Subscription"); 
       intent.putExtra("code", codigo); 
       intent.putExtra("keyword", keyword); 
       startActivityForResult(intent, 1); 
      } 
     }); 

並且這是清單

<activity 
      android:name="com.XXX.YYY.Subscription" 
      android:label="@string/app_name"> 
</activity> 

任何想法,爲什麼我有這種異常?

非常感謝!

回答

1

首先,com.XXX.YYY.Subscription需要是com.telecoming.sms_payment.Subscription,如果你的代碼是相信的話。

其次,不要創建Intent這種方式,作爲您<activity>不聲稱支持ACTION_MAIN。替換爲您的代碼:

Button juego1Btn = (Button) findViewById(R.id.juego1Btn); 

    juego1Btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(WhateverYourActivityClassIsWhereYouAreRightNow.this, Subscription.class); 
      intent.putExtra("code", codigo); 
      intent.putExtra("keyword", keyword); 
      startActivityForResult(intent, 1); 
     } 
    }); 

+0

感謝CoomnsWare,我照你說的,但Subscription.class不能被解析爲一個類型。我還在主要活動 import com.telecoming.sms_payment。*中導入了該軟件包。 – Ivan 2013-03-22 11:59:28

+0

@Ivan:顯然,您沒有名爲'com.telecoming.sms_payment.Subscription'的類。這就是爲什麼你應該使用我推薦的'Intent'構造函數,所以你會得到編譯時錯誤。要麼需要實現這個類,要麼需要閱讀'Subscription'類文件頂部的'package'語句來了解正確的包名。 – CommonsWare 2013-03-22 12:00:52

+0

com.telecoming.sms_payment.Subscription是jar文件中te活動的名稱,如果我用intent調用方法,是否需要實現該類?如果是的,我該怎麼做? – Ivan 2013-03-22 12:04:10