Android应用总是崩溃

时间:2012-07-12 22:08:26

标签: android admob ads

任何人都可以告诉我有什么不对吗? 该应用程序总是在设备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); 
}

这是catlog

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

1 个答案:

答案 0 :(得分: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行的课程adMain中,您试图为活动布局中不存在的视图进行充气:

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

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