Ошибка при попытке добавить кнопку - PullRequest
0 голосов
/ 07 декабря 2011

Когда я пытаюсь запустить его в моем AVD, выдается сообщение об ошибке: Извините!приложение Hello World (процесс com.duncan.hello.world) неожиданно остановилось.Пожалуйста, попробуйте еще раз.Я думаю, что это связано с добавлением в код для второй кнопки, потому что до этого она работала нормально.Это код, который у меня есть в моем основном файле Java:

package com.duncan.hello.world;  

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button;  
import com.duncan.hello.world.R;  

public class HelloWorldActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) {     
    super.onCreate(savedInstanceState);     
    setContentView(R.layout.main);     

              Button aButton;
    aButton = (Button) this.findViewById(R.id.button1);

    aButton.setOnClickListener(new OnClickListener() {         
        public void onClick(View v) {             

Intent i = new Intent (HelloWorldActivity.this, OtherActivity.class);             
            startActivity(i);       
            }
        }); 

    Button newButton;

    newButton = (Button) this.findViewById(R.id.meh);

    newButton.setOnClickListener(new OnClickListener() {         
        public void onClick(View v) {             
Intent i = new Intent(HelloWorldActivity.this, Meh.class);             
            startActivity(i);       
            }
        });

    } 
}

, это другой .xml (макет, где Meh):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="you...are...on...page...2...!!!" />

<Button
    android:id="@+id/meh"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="meh"/>


<Button
    android:id="@+id/p40"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="this go to p40" />

</LinearLayout>

здесь Meh.java:

package com.duncan.hello.world;
import com.duncan.hello.world.R;

import android.app.Activity;
import android.os.Bundle;
public class Meh extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.meh);
}
}

logcat ошибки: 12-07 14: 40: 00.840: E / AndroidRuntime (497): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: main

12-07 14: 40: 00.840: E/ AndroidRuntime (497): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.duncan.hello.world/com.duncan.hello.world.HelloWorldActivity}: java.lang.NullPointerException

12-07 14: 40: 00.840: E / AndroidRuntime (497): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663)

12-07 14: 40: 00.840: E / AndroidRuntime (497): в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679)

12-07 14: 40: 00.840: E / AndroidRuntime (497): в android.app.ActivityThread.access $ 2300 (ActivityThread.java: 125)

12-07 14: 40: 00.840: E / AndroidRuntime (497): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033)

12-07 14: 40: 00.840: E / AndroidRuntime (497): на android.os.Handler.dispatchMessage (Handler.java:99)

12-07 14: 40: 00.840: E /AndroidRuntime (497): на android.os.Looper.loop (Looper.java:123)

12-07 14: 40: 00.840: E / AndroidRuntime (497): на android.app.ActivityThread.main(ActivityThread.java:4627)

12-07 14: 40: 00.840: E / AndroidRuntime (497): на java.lang.reflect.Method.invokeNative (собственный метод)

12-07 14: 40: 00.840: E / AndroidRuntime (497): по адресу java.lang.reflect.Method.invoke (Method.java:521)

12-07 14: 40: 00.840: E / AndroidRuntime(497): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)

12-07 14: 40: 00.840: E / AndroidRuntime (497): на ком.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)

12-07 14: 40: 00.840: E / AndroidRuntime (497): в dalvik.system.NativeStart.main (собственный метод)

12-07 14: 40: 00.840: E / AndroidRuntime (497): вызвано: java.lang.NullPointerException

12-07 14: 40: 00.840: E / AndroidRuntime (497): на com.duncan.hello.world.HelloWorldActivity.onCreate (HelloWorldActivity.java:32)

12-07 14:40:00.840: E / AndroidRuntime (497): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047)

12-07 14: 40: 00.840: E / AndroidRuntime (497): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627)

12-07 14: 40: 00.840: E / AndroidRuntime (497): ... еще 11

Ответы [ 2 ]

0 голосов
/ 08 декабря 2011

Проблема в том, что вы просматриваете содержимое как main.xml, а не other.xml. Если ваша кнопка 'meh' отсутствует в main.xml, вы получите исключение NullPointerException.

0 голосов
/ 07 декабря 2011

Можете ли вы дать вывод logcat? Если проблемы возникли после того, как вы добавили вторую кнопку, значит, Meh.java отсутствует в вашем файле mainfest?

Выходные данные Logcat можно найти, если переключить представления (в верхнем правом углу) на DDMS, а затем нажать LogCat. Нажмите W или E в правой части окна logcat, оно должно показать вам предупреждения и ошибки, которые произошли. Ваш сбой будет красным, поэтому скопируйте и вставьте эту часть, чтобы показать нам проблему.

Ваша проблема в том, что вы декларируете

Button aButton; 

перед вызовом метода super onCreate. Вы должны вызвать super.onCreate (bundleInstanceState), прежде чем делать что-либо еще.

То, что вы хотите сделать, больше похоже на:

public class HelloWorldActivity extends Activity { 
    Button aButton;

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //whatever button listeners you want to create and initialize buttons
     }
 }

Вы упомянули, что кнопка 'meh' находится в other.xml. Он должен быть в main.xml. Добавьте кнопку с идентификатором «meh» в main.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...