2012-11-18 112 views
2

我正在嘗試運行亞馬遜提供的示例項目,旨在說明亞馬遜的移動廣告api,但它會產生錯誤。這裏是logcat的內容:無法實例化活動

11-18 02:34:49.470: W/dalvikvm(938): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
11-18 02:34:49.501: E/AndroidRuntime(938): FATAL EXCEPTION: main 
11-18 02:34:49.501: E/AndroidRuntime(938): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.amazon.sample.simplead/com.amazon.sample.simplead.SimpleAdActivity}: java.lang.ClassNotFoundException: com.amazon.sample.simplead.SimpleAdActivity 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1923) 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2024) 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.access$600(ActivityThread.java:126) 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.os.Looper.loop(Looper.java:137) 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.main(ActivityThread.java:4479) 
11-18 02:34:49.501: E/AndroidRuntime(938): at java.lang.reflect.Method.invokeNative(Native Method) 
11-18 02:34:49.501: E/AndroidRuntime(938): at java.lang.reflect.Method.invoke(Method.java:511) 
11-18 02:34:49.501: E/AndroidRuntime(938): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
11-18 02:34:49.501: E/AndroidRuntime(938): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
11-18 02:34:49.501: E/AndroidRuntime(938): at dalvik.system.NativeStart.main(Native Method) 
11-18 02:34:49.501: E/AndroidRuntime(938): Caused by: java.lang.ClassNotFoundException: com.amazon.sample.simplead.SimpleAdActivity 
11-18 02:34:49.501: E/AndroidRuntime(938): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
11-18 02:34:49.501: E/AndroidRuntime(938): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
11-18 02:34:49.501: E/AndroidRuntime(938): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1914) 
11-18 02:34:49.501: E/AndroidRuntime(938): ... 11 more 
11-18 02:39:49.690: I/Process(938): Sending signal. PID: 938 SIG: 9 

下面是Android清單文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.amazon.sample.simplead" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="4" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 


<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".SimpleAdActivity" 
     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="com.amazon.device.ads.MraidBrowser" android:configChanges="keyboardHidden|orientation"/> 
    <activity android:name="com.amazon.device.ads.VideoActionHandler" android:configChanges="keyboardHidden|orientation"/> 
</application> 

我試圖改變這行:

android:name=".SimpleAdActivity" 

android:name="com.amazon.sample.simplead.SimpleAdActivity" 

仍然會得到相同的錯誤。

編輯:這裏是類代碼

/** 


* Copyright 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved. 
* Licensed under the Apache License, Version 2.0 (the "License"). 
* You may not use this file except in compliance with the License. 
* A copy of the License is located at http://aws.amazon.com/apache2.0/ 
* or in the "license" file accompanying this file. 
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
* CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 
package com.amazon.sample.simplead; 

import com.amazon.device.ads.*; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

/** 
* This is a simple app for testing ad loading capabilities of the Amazon Mobile Ads SDK. 
* This app demonstrates ad loading, expanding and collapsing along with device rotation. 
*/ 

    public class SimpleAdActivity extends Activity implements AdListener 
{ 

private AdLayout adView; // The ad view used to load and display the ad. 
private static final String APP_ID = "sample-app-v1_pub-2"; // Sample App Key. Replace this variable with your App Key 
private static final String LOG_TAG = "SimpleAdSample"; // Tag used to prefix all log messages 

/** 
* When the activity starts, load an ad and set up the button click event to load another ad when it's clicked. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // For debugging purposes enable logging, but disable for production builds 
    AdRegistration.enableLogging(this, true); 
    // For debugging purposes flag all ad requests as tests, but set to false for production builds 
    AdRegistration.enableTesting(this, true); 

    adView = (AdLayout)findViewById(R.id.ad_view); 
    adView.setListener(this); 

    try { 
     AdRegistration.setAppKey(getApplicationContext(), APP_ID); 
    } catch (Exception e) { 
     Log.e(LOG_TAG, "Exception thrown: " + e.toString()); 
     return; 
    } 

    // Assign an onclick handler to the button that will load our ad. 
    Button button = (Button) findViewById(R.id.load_ad_button); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      LoadAd(); 
     } 
    }); 

    // Calling load ad in the Activity's onCreate method allows a new ad to be loaded 
    // when the application starts and also when the device is rotated. 
    LoadAd(); 
} 

/** 
* Load a new ad. 
*/ 
public void LoadAd() { 
    // Load the ad with the appropriate ad targeting options. 
    AdTargetingOptions adOptions = new AdTargetingOptions(); 
    adView.loadAd(adOptions); 
} 

/** 
* This event is called after a rich media ads has collapsed from an expanded state. 
*/ 
@Override 
public void onAdCollapsed(AdLayout view) { 
    Log.d(LOG_TAG, "Ad collapsed."); 
} 

/** 
* This event is called if an ad fails to load. 
*/ 
@Override 
public void onAdFailedToLoad(AdLayout view, AdError error) { 
    Log.w(LOG_TAG, "Ad failed to load. Code: " + error.getResponseCode() + ", Message: " + error.getResponseMessage()); 
} 

/** 
* This event is called once an ad loads successfully. 
*/ 
@Override 
public void onAdLoaded(AdLayout view, AdProperties adProperties) { 
    Log.d(LOG_TAG, adProperties.getAdType().toString() + " Ad loaded successfully."); 
} 

/** 
* This event is called after a rich media ad expands. 
*/ 
@Override 
public void onAdExpanded(AdLayout view) { 
    Log.d(LOG_TAG, "Ad expanded."); 
} 
} 
+1

請顯示課程代碼。 – MByD

回答

0

您的清單標籤需要包= 「com.amazon.sample.simplead」

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.amazon.sample.simplead"> 

<uses-sdk android:minSdkVersion="4" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 


<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".SimpleAdActivity" 
     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="com.amazon.device.ads.MraidBrowser" android:configChanges="keyboardHidden|orientation"/> 
    <activity android:name="com.amazon.device.ads.VideoActionHandler" android:configChanges="keyboardHidden|orientation"/> 
</application> 
</manifest> 

編輯:我假設你正在使用蝕。展開您的src文件夾,應該有一個名爲com.amazon.sample.simplead的包文件夾,通常在其旁邊有一個棕色圖標。如果你展開這個包文件夾,你會看到一堆類,包括SimpleAdActivity。那是嗎?

+0

已經在那裏,我不知道爲什麼它沒有出現在我原來的帖子,編輯原始帖子,以顯示真實的清單。 – clayton33

+0

我在睡覺之前唯一想到的其他問題是什麼?爲什麼您的包名是「com.amazon.sample.simplead」?如果您在應用程序中使用com.amazon.sample.simplead庫,則需要您自己的唯一程序包名稱。 – ajacian81

+0

這不是我的包。所有我想要做的是運行我從亞馬遜下載的示例包,它甚至不會編譯,由於錯誤...:/ – clayton33

3

添加amazon-ads-x.y.z.jar作爲Java Build Path -> Order and Export下的導出庫。

相關問題