0

谁能告诉我有什么问题?该应用程序总是在设备 SE xperia X10 上崩溃。也许这就是我嵌入 ADMOB 的方式。它甚至没有显示一秒钟。请问有什么线索吗?XML 和清单中的一切似乎都很好。谢谢

package com.taiic.template.admob;


import com.google.ads.AdRequest;
import com.google.ads.AdView;
import java.io.IOException;
import java.util.*;

import android.widget.*;
import android.view.View;
import android.view.View.OnClickListener;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.location.*;
import android.content.*;

import android.app.Activity;
import android.os.Bundle;

public class adMain extends Activity {

    Button addressButton;
    TextView locationText;
    TextView addressText;
    Location currentLocation;
    double currentLatitude;
    double currentLongitude;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);




    addressText = (TextView)findViewById(R.id.addressText);
    locationText = (TextView)findViewById(R.id.locationText);
    addressButton = (Button)findViewById(R.id.addressButton);

    this.addressText.setText("ready");

    LocationManager locationManager = 
        (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);

    LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            updateLocation(location);
        }
        public void onStatusChanged(
                String provider, int status, Bundle extras) {}
        public void onProviderEnabled(String provider) {}
        public void onProviderDisabled(String provider) {}
    };

    locationManager.requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

    this.addressButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v){
            getAddress();
        }
    });
}

void getAddress(){
    try{
        Geocoder gcd = new Geocoder(this, Locale.getDefault());
        List<Address> addresses = 
            gcd.getFromLocation(currentLatitude, currentLongitude,100);
        if (addresses.size() > 0) {
            StringBuilder result = new StringBuilder();
            for(int i = 0; i < addresses.size(); i++){
                Address address =  addresses.get(i);
                int maxIndex = address.getMaxAddressLineIndex();
                for (int x = 0; x <= maxIndex; x++ ){
                    result.append(address.getAddressLine(x));
                    result.append(",");
                }               
                result.append(address.getLocality());
                result.append(",");
                result.append(address.getPostalCode());
                result.append("\n\n");
            }
            addressText.setText(result.toString());
        }
    }
    catch(IOException ex){
        addressText.setText(ex.getMessage().toString());
    }
}

void updateLocation(Location location){
    currentLocation = location;
    currentLatitude = currentLocation.getLatitude();
    currentLongitude = currentLocation.getLongitude();
    locationText.setText(currentLatitude + ", " + currentLongitude);
}

AdView layout = (AdView)this.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest();
adRequest.setTesting(true);
layout.loadAd(adRequest); 
}

这是目录

07-13 00:10:59.451: D/AndroidRuntime(3735): Shutting down VM
07-13 00:10:59.451: W/dalvikvm(3735): threadid=1: thread exiting with uncaught exception (group=0x4001d560)
07-13 00:10:59.461: E/AndroidRuntime(3735): FATAL EXCEPTION: main
07-13 00:10:59.461: E/AndroidRuntime(3735): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.taiic.template.admob/com.taiic.template.admob.adMain}: java.lang.NullPointerException
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1581)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.app.ActivityThread.access$1500(ActivityThread.java:121)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.os.Looper.loop(Looper.java:123)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.app.ActivityThread.main(ActivityThread.java:3701)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at java.lang.reflect.Method.invokeNative(Native Method)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at java.lang.reflect.Method.invoke(Method.java:507)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at dalvik.system.NativeStart.main(Native Method)
07-13 00:10:59.461: E/AndroidRuntime(3735): Caused by: java.lang.NullPointerException
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.app.Activity.findViewById(Activity.java:1647)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at com.taiic.template.admob.adMain.<init>(adMain.java:102)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at java.lang.Class.newInstanceImpl(Native Method)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at java.lang.Class.newInstance(Class.java:1409)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
07-13 00:10:59.461: E/AndroidRuntime(3735):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1573)
07-13 00:10:59.461: E/AndroidRuntime(3735):     ... 11 more
4

1 回答 1

2

日志很清楚出了什么问题:

Caused by: java.lang.NullPointerException
at android.app.Activity.findViewById(Activity.java:1647)
at com.taiic.template.admob.adMain.<init>(adMain.java:102)

在第 102 行的 classadMain中,您试图膨胀活动布局中不存在的视图:

AdView layout = (AdView)this.findViewById(R.id.adView);

所以问题是:您是否实际上将AdView视图(带有 id )添加到您设置为活动内容视图android:id="@+id/adView"的文件中定义的布局?main.xml该错误表明您没有。

于 2012-07-12T22:34:31.210 回答