2014-04-29 5 views
0

Я делаю игру на андроид, и я хотел бы использовать цикл в onClickListener, чтобы отобразить диалоговое окно, которое хранится в String.xmlApp падает, когда умысел новый вид деятельности

Я установил код, но сбои приложения, там нет ошибки в затмении, но я не знаю, что случилось. Так PLZ помочь проверить код. Я покажу код, который я могу запустить без сбоев (с onClickListener, без цикла) и неправильный код, который вызвал сбой (с помощью цикла, который я написал, я думаю, что-то там не так)

Тот, авария

package com.group5.littlered; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.TextView; 

public class Scene1 extends Activity{ 

MediaPlayer wovleshowling; 
MediaPlayer bgm; 

@Override 
public void onBackPressed(){} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    //Remove title bar 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    //Remove notification bar 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 


    setContentView(R.layout.activity_scene1); 
    Intent intent = getIntent(); 

    Button next = (Button) findViewById(R.id.wtf); 
    next.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      } 



     } 
); 

    //BGM 
    bgm = MediaPlayer.create(Scene1.this, R.raw.unsettledthoughts); 
    bgm.setLooping(true); 
    bgm.start(); 

    //wovleshowling 
    wovleshowling = MediaPlayer.create(Scene1.this, R.raw.wolveshowling); 
    wovleshowling.setLooping(false); 
    wovleshowling.start(); 

} 

} 

Тот, который разбился:

package com.group5.littlered; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.TextView; 

public class Scene1 extends Activity{ 

MediaPlayer wovleshowling; 
MediaPlayer bgm; 

int position = 0; 
String [] conversation = getResources().getStringArray(R.array.scene1); 
TextView frame = (TextView) findViewById(R.id.textView1); 

@Override 
public void onBackPressed(){} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    //Remove title bar 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    //Remove notification bar 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 


    setContentView(R.layout.activity_scene1); 
    Intent intent = getIntent(); 

    Button next = (Button) findViewById(R.id.wtf); 
    next.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if (position < 6){ 

       String sentence = conversation[position]; 

      frame.setText(sentence + ""); 
      position ++ ; 
      } 
      } 



     } 
); 

    //BGM 
    bgm = MediaPlayer.create(Scene1.this, R.raw.unsettledthoughts); 
    bgm.setLooping(true); 
    bgm.start(); 

    //wovleshowling 
    wovleshowling = MediaPlayer.create(Scene1.this, R.raw.wolveshowling); 
    wovleshowling.setLooping(false); 
    wovleshowling.start(); 





} 

} 
+2

аварии -> после StackTrace. – njzk2

+1

также вы отправили дважды тот же класс. – njzk2

+0

yah, но они - один и тот же класс, но я могу запустить первый (без цикла, который я написал сам), второй, который я не могу запустить, его грозит катастрофа – user3585596

ответ

0

Пожалуйста переместите

TextView frame = (TextView) findViewById(R.id.textView1); 

внутри сверхуCreate() после комплектContentView call.

Поскольку вы не вставляете журналы, я предполагаю, что это вызывает NullPointerException в вашей функции onClick().

+0

Спасибо вам! Но он все еще не работает – user3585596

+0

Пожалуйста, вставьте свои журналы для этого сбоя. –

0

Вы должны обновить интерфейс в onCreate(), So Bind TextView с помощью xml в onCreate().

public class Scene1 extends Activity{ 

MediaPlayer wovleshowling; 
MediaPlayer bgm; 

int position = 0; 
String [] conversation = getResources().getStringArray(R.array.scene1); 
TextView frame; 

@Override 
public void onBackPressed(){} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    frame = (TextView) findViewById(R.id.textView1);//this should be inside the onCreate() method 
    //Remove title bar 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    //Remove notification bar 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 


    setContentView(R.layout.activity_scene1); 
    Intent intent = getIntent(); 

    Button next = (Button) findViewById(R.id.wtf); 
    next.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if (position < 6){ 

       String sentence = conversation[position]; 

      frame.setText(sentence + ""); 
      position ++ ; 
      } 
      } 



     } 
); 

    //BGM 
    bgm = MediaPlayer.create(Scene1.this, R.raw.unsettledthoughts); 
    bgm.setLooping(true); 
    bgm.start(); 

    //wovleshowling 
    wovleshowling = MediaPlayer.create(Scene1.this, R.raw.wolveshowling); 
    wovleshowling.setLooping(false); 
    wovleshowling.start(); 

} 

} 
+0

СПАСИБО ВАС ВЕРОЯТНО, но это не работает Я сделал именно то, что вы мне сказали – user3585596

+0

опубликуйте свой логарифм, если он все еще не работает –

0

TextView кадра = (TextView) findViewById (R.id.textView1); должен быть внутри OnCreate() метод, Becuase метода findViewById() вызывается после приложения создается

Смежные вопросы