2012-05-29 2 views
1

Я довольно новичок в Android, и приложение отключается сразу после создания. Любая помощь будет оценена!Приложение для Android закрывается при создании?

Немного о приложении, я создаю текстовое приключение, и у меня есть весь код, закодированный в java, и я знаю, что Java-код работает, потому что у меня есть JavaGui, созданный и работающий на него. Теперь я пытаюсь довести эту java-игру до android.

Вот мой журнал ошибок

05-29 09:19:01.989: E/AndroidRuntime(539): FATAL EXCEPTION: main 
05-29 09:19:01.989: E/AndroidRuntime(539): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.coalbolttproductions.russell/com.coalbolttproductions.russell.AdventureToCandyIslandActivity}: java.lang.NullPointerException 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.os.Looper.loop(Looper.java:137) 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-29 09:19:01.989: E/AndroidRuntime(539): at java.lang.reflect.Method.invokeNative(Native Method) 
05-29 09:19:01.989: E/AndroidRuntime(539): at java.lang.reflect.Method.invoke(Method.java:511) 
05-29 09:19:01.989: E/AndroidRuntime(539): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-29 09:19:01.989: E/AndroidRuntime(539): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-29 09:19:01.989: E/AndroidRuntime(539): at dalvik.system.NativeStart.main(Native Method) 
05-29 09:19:01.989: E/AndroidRuntime(539): Caused by: java.lang.NullPointerException 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.app.Activity.findViewById(Activity.java:1794) 
05-29 09:19:01.989: E/AndroidRuntime(539): at com.coalbolttproductions.russell.AdventureToCandyIslandActivity.<init>(AdventureToCandyIslandActivity.java:15) 
05-29 09:19:01.989: E/AndroidRuntime(539): at java.lang.Class.newInstanceImpl(Native Method) 
05-29 09:19:01.989: E/AndroidRuntime(539): at java.lang.Class.newInstance(Class.java:1319) 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
05-29 09:19:01.989: E/AndroidRuntime(539): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 
05-29 09:19:01.989: E/AndroidRuntime(539): ... 11 more 

Вот мой main.xml, что я считаю, это истинная причина моей проблемы

<?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" 
    android:padding="25dp"> 

    <EditText 
     android:id="@+id/etCommands" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:hint="Type a Command" 
     android:password="true" /> 

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

    <TextView 
     android:id="@+id/tvResults" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="TextView" /> 

</LinearLayout> 

В связи с большим спросом здесь является Java-код от моего Класс приключений. линия 15 является кнопка chkCmd

public class AdventureToCandyIslandActivity extends Activity implements View.OnClickListener{ 
    /** Called when the activity is first created. */ 

    Button chkCmd = (Button) findViewById(R.id.bResults); 
    EditText input; 
    TextView display; 

    Game gameModel; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //Run the methods 
     createVars(); 
     chkCmd.setOnClickListener(this); 

    } 

    private void createVars(){ 
     gameModel = new Game(); 
     input = (EditText) findViewById(R.id.etCommands); 
     display = (TextView) findViewById(R.id.tvResults); 
     display.setText(gameModel.printWelcome()); 
     display.setGravity(Gravity.LEFT); 
     display.setTextColor(Color.WHITE); 

    } 

    public void onClick(View v) { 
     String inputLine = input.getText().toString(); 
     Command command = Command.getCommand(inputLine); 
     String result = gameModel.processCommand(command); 
     if(result.equals("EXIT")) { 
      System.exit(0); 
     } else { 
      display.append("--------------------------------\n" + result + "\n"); 
     } 

    } 


} 
+1

здесь добавить Java-код, пожалуйста. – Sajmon

+0

Поскольку трассировка стека говорит, что действие 'AdventureToCandyIslandActivity' не запускается из-за указателя Null. Это очень помогло бы нам, если бы вы могли показать код из этого. – Cheesebaron

+0

'AdventureToCandyIslandActivity.java' см. Строку № 15 –

ответ

2

Независимо вид вы настраиваете возвращается null вы дважды проверили идентификатор правильно и что setContentView(R.layout.xxx) указывает на правильный файл?

Кроме того, если у вас есть различные схемы, определенные для портретного и альбомного это может вызвать подобные проблемы, если идентификаторы ваших взглядов не не match.AdventureToCandyIslandActivity.java видеть линии не 15

EDIT

Button chkCmd = (Button) findViewById(R.id.bResults); Вы инициализировали кнопку в загрузчике классов, если вы инициализируете ее в том же месте, что и другие виды, это будет нормально.

+0

Хм, я использую только вертикальный пейзаж в своем макете, и я уверен, что мой setContentView верен , Xml, который я наклеил выше, называется main.xml, который я открываю в своей деятельности ATCI –

0

ИЗМЕНЕНИЕ

Button chkCmd = (Button) findViewById(R.id.bResults); 
EditText input; 
TextView display; 

Game gameModel; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

К НАСТОЯЩЕМУ

Button chkCmd; 
EditText input; 
TextView display; 

Game gameModel; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    chkCmd = (Button) findViewById(R.id.bResults); 

AS перед установкой МАКЕТА, Вы не можете инициализировать кнопку, которая является частью этого макета.

0
Button chkCmd = (Button) findViewById(R.id.bResults); 

Вы использовали findViewById (R.id.bResults) перед установкой ContentView поэтому используйте следующий код после его удаления:

setContentView(R.layout.main); 
chkCmd = (Button) findViewById(R.id.bResults);