首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在两个类之间切换,但程序已停止。为什么?

在两个类之间切换,但程序已停止。为什么?
EN

Stack Overflow用户
提问于 2012-11-11 14:33:40
回答 4查看 131关注 0票数 0

我在程序中有两节课。我想当用户点击两个第一个按钮,程序转到第一类(主类)。我不使用片段。我写了这段代码,但当运行该程序并单击Places按钮时,该程序已停止。为什么?(在我添加按钮点击之前,程序会正确运行)。LogCat写入null异常,但我找不到何处为null?!请帮帮我。

Location.java

代码语言:javascript
运行
复制
public class Location extends MapActivity {
private FrameLayout linear;
private MapView map;
private MapController controller;
private EditText text_location;
GeoPoint searchLocation;
GeoPoint mylocation;
double myLatitude=0;
double myLongitude=0;
List<Overlay> mapOverlays;
Drawable drawable;
SimpleItemizedOverlay itemizedOverlay;

//Other classes
private Button mHome;
private Button mProduct;
private Button mPlaces;
private WebView mWebView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.location);

    initOtherButtons();
            //....
    }
    private void initOtherButtons(){
    mHome=(Button)findViewById(R.id.button_home);
    mProduct=(Button)findViewById(R.id.button_product);
    mPlaces=(Button)findViewById(R.id.button_places);
    mWebView=(WebView)findViewById(R.id.web_view);
    //TEST
    mHome.setOnClickListener(onClickListener);
    mProduct.setOnClickListener(onClickListener);

}
private OnClickListener onClickListener=new OnClickListener(){
    Intent i=new Intent(Location.this,Main.class);
    public void onClick(View v){
        switch(v.getId()){
        case R.id.button_home:
            startActivity(i);
            break;
        case R.id.button_product:
            startActivity(i);
            break;
        }
    }
};
}

Main.java

代码语言:javascript
运行
复制
public class Main extends Activity {

private WebView mWebView;
private Button mHome;
private Button mProduct;
private Button mPlaces;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mWebView = (WebView)findViewById(R.id.web_view);
mWebView.loadUrl("http://www.google.com");

mHome = (Button)findViewById(R.id.button_home);
mProduct=(Button)findViewById(R.id.button_product);
mPlaces=(Button)findViewById(R.id.button_places);

mHome.setOnClickListener(onClickListener);
mProduct.setOnClickListener(onClickListener);
mPlaces.setOnClickListener(onClickListener);

}
private OnClickListener onClickListener=new OnClickListener(){
public void onClick(View v){
    switch(v.getId()){
    case R.id.button_home:
        mWebView.loadUrl("http://www.google.com");
        break;
    case R.id.button_product:
        mWebView.loadUrl("http://www.google.com");
        break;
    case R.id.button_places:
        Intent i=new Intent(Main.this,Location.class);
        startActivity(i);
        break;
    }
}
};
}

Manifest.xml:

代码语言:javascript
运行
复制
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.example.loyaltier"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />



<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"

    android:theme="@style/AppTheme" >
    <uses-library android:name="com.google.android.maps" />  
    <activity
        android:name=".Main"
        android:label="@string/title_activity_main" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Location"
        android:label="@string/Location_title">
        </activity>
        <activity android:name=".SimpleItemizedOverlay"
        android:label="@string/app_name">
        </activity>

    <activity android:name=".BalloonOverlayView"
        android:label="@string/app_name">
        </activity>

    <activity android:name=".BalloonItemizedOverlay"
        android:label="@string/app_name">
        </activity>
</application>

</manifest>

LogCat:

代码语言:javascript
运行
复制
11-11 09:56:16.506: D/OpenGLRenderer(18214): Flushing caches (mode 1)
11-11 09:56:16.506: D/OpenGLRenderer(18214): Flushing caches (mode 0)
11-11 09:56:38.006: D/dalvikvm(18275): GC_CONCURRENT freed 172K, 2% free 14351K/14599K, paused 9ms+2ms
11-11 09:56:38.053: D/dalvikvm(18275): GC_FOR_ALLOC freed 7K, 2% free 14715K/14983K, paused 11ms
11-11 09:56:39.287: D/AndroidRuntime(18275): Shutting down VM
11-11 09:56:39.287: W/dalvikvm(18275): threadid=1: thread exiting with uncaught exception (group=0x40a891f8)
11-11 09:56:39.295: E/AndroidRuntime(18275): FATAL EXCEPTION: main
11-11 09:56:39.295: E/AndroidRuntime(18275): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.example.loyaltier/org.example.loyaltier.Location}: java.lang.NullPointerException
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.app.ActivityThread.access$600(ActivityThread.java:122)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.os.Looper.loop(Looper.java:137)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.app.ActivityThread.main(ActivityThread.java:4340)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at java.lang.reflect.Method.invokeNative(Native Method)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at java.lang.reflect.Method.invoke(Method.java:511)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at dalvik.system.NativeStart.main(Native Method)
11-11 09:56:39.295: E/AndroidRuntime(18275): Caused by: java.lang.NullPointerException
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.content.ComponentName.<init>(ComponentName.java:75)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.content.Intent.<init>(In tent.java:3004)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at org.example.loyaltier.Location$1.<init>(Location.java:118)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at org.example.loyaltier.Location.<init>(Location.java:117)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at java.lang.Class.newInstanceImpl(Native Method)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at java.lang.Class.newInstance(Class.java:1319)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
11-11 09:56:39.295: E/AndroidRuntime(18275):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870)
11-11 09:56:39.295: E/AndroidRuntime(18275):    ... 11 more

编辑:简单程序

代码语言:javascript
运行
复制
private OnClickListener onClickListener=new OnClickListener(){
    public void onClick(View v){
        switch(v.getId()){
        case R.id.button_home:
            mWebView.loadUrl("http://www.google.com");
            break;

        }
    }
};
EN

回答 4

Stack Overflow用户

发布于 2012-11-11 14:39:31

可能是manifest.xml中的activity声明不正确(或者根本没有)。验证清单并确保活动已声明且名称正确。

票数 1
EN

Stack Overflow用户

发布于 2012-11-11 14:40:13

它看起来像是一个NullPointerException:

代码语言:javascript
运行
复制
11-11 09:56:39.295: E/AndroidRuntime(18275): Caused by: java.lang.NullPointerException

你的两个活动类都在清单中吗?如果是这样,请检查Main的onCreate中是否有NPE,或者在此处发布您的代码。

票数 0
EN

Stack Overflow用户

发布于 2012-11-11 14:57:23

如果您是在模拟器中运行此程序,那么请检查您的模拟器是否支持MapView所需的Google API。请查看此链接以了解AVD设置。

EDIT01:请尝试将Intent i=new Intent(Location.this,Main.class);移入onClick()方法,如下所示:

代码语言:javascript
运行
复制
private OnClickListener onClickListener=new OnClickListener(){

    public void onClick(View v){
    Intent i=new Intent(Location.this,Main.class);
        switch(v.getId()){
        case R.id.button_home:
            startActivity(i);
            break;
        case R.id.button_product:
            startActivity(i);
            break;
        }
    }
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13329115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档