无法实例化活动

时间:2012-11-18 07:51:34

标签: android manifest

我正在尝试运行亚马逊提供的示例项目,旨在说明亚马逊的移动广告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.");
}
}

2 个答案:

答案 0 :(得分:3)

将amazon-ads-x.y.z.jar添加为Java Build Path -> Order and Export下的导出库。

答案 1 :(得分:0)

您的清单标记需要package =“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>

编辑:我假设您正在使用Eclipse。展开 src 文件夹,应该有一个名为com.amazon.sample.simplead的包文件夹,旁边通常带有棕色图标。如果展开该包文件夹,您应该看到一堆包括SimpleAdActivity的类。那是吗?