我在Android上制作游戏,我想在onClickListener
中使用循环来显示存储在String.xml
我设置了一些代码,但应用程序崩溃了,eclipse中没有错误,但我不知道错误是什么。所以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();
}
}
答案 0 :(得分:0)
请移动
TextView frame = (TextView) findViewById(R.id.textView1);
在setContentView调用之后的onCreate()里面。
由于您还没有粘贴日志,我假设这会在您的onClick()函数中导致NullPointerException。
答案 1 :(得分:0)
你应该在onCreate()中更新UI,在onCreate()中使用xml绑定TextView。
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();
}
}
答案 2 :(得分:0)
TextView frame =(TextView)findViewById(R.id.textView1); 必须在 onCreate()方法内,因为在创建应用程序后调用的方法 findViewById()