ボタンに表示されるテキストをJavaファイルから変更しようとしていますが、うまくいきません。さまざまなフォーラムでしばらく検索し、Google検索を行った後、新しいボタンを作成してからbutton.setTextを使用する方法を学びました。しかし、アプリケーションが突然終了し、強制終了についてのメッセージが表示された後、デバッグを行うことにしました。問題はこのJavaクラスにあることがわかりました。
package com.KenanDeHart.thebasics;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.content.Intent;
public class Showrole extends Activity {
public static int players;
public static int idx;
public static int[] playArray;
public static Button nextplayerButton =null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_role);
Bundle extras = getIntent().getExtras();
Showrole.players = extras.getInt("PLAYERS");
for (idx = 0; idx < players ; ++idx){
display(idx);
++idx;
}
}
public void display(int idx){
Bundle extras = getIntent().getExtras();
playArray = extras.getIntArray("PLAYARRAY");
nextplayerButton = (Button) findViewById(R.id.nextplayer);
nextplayerButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
nextplayerButton.setText(playArray[Showrole.idx]);
}
});
}
@Override
protected void onPause() {
super.onPause();
}
public void next(){
Bundle extras = getIntent().getExtras();
Button button = (Button)findViewById(R.id.nextplayer);
button.setText("Next Player");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
ブレークポイントを使用した後、問題のあるソースコードを見つけたと思います。
public void display(int idx){
Bundle extras = getIntent().getExtras();
playArray = extras.getIntArray("PLAYARRAY");
nextplayerButton = (Button) findViewById(R.id.nextplayer);
nextplayerButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
nextplayerButton.setText(playArray[Showrole.idx]);
}
});
}
より具体的には、この行
nextplayerButton.setText(playArray[Showrole.idx]);
[続行]を押すと、一連のことが起こります。
- と呼ばれるファイルが開きます
ZygoteInit $ MethodAndArgsCaller.run()
- 私の電話は一度振動します
- 約3秒経過
- 私の電話は3回速く振動します
- プログラムは終了します
11-30 12:47:28.770: E/AndroidRuntime(9770): FATAL EXCEPTION: main
11-30 12:47:28.770: E/AndroidRuntime(9770): java.lang.NullPointerException
11-30 12:47:28.770: E/AndroidRuntime(9770): at com.KenanDeHart.thebasics.Showrole$1.onClick(Showrole.java:51)
11-30 12:47:28.770: E/AndroidRuntime(9770): at android.view.View.performClick(View.java:2461)
11-30 12:47:28.770: E/AndroidRuntime(9770): at android.view.View$PerformClick.run(View.java:8888)
11-30 12:47:28.770: E/AndroidRuntime(9770): at android.os.Handler.handleCallback(Handler.java:587)
11-30 12:47:28.770: E/AndroidRuntime(9770): at android.os.Handler.dispatchMessage(Handler.java:92)
11-30 12:47:28.770: E/AndroidRuntime(9770): at android.os.Looper.loop(Looper.java:123)
11-30 12:47:28.770: E/AndroidRuntime(9770): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-30 12:47:28.770: E/AndroidRuntime(9770): at java.lang.reflect.Method.invokeNative(Native Method)
11-30 12:47:28.770: E/AndroidRuntime(9770): at java.lang.reflect.Method.invoke(Method.java:521)
11-30 12:47:28.770: E/AndroidRuntime(9770): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-30 12:47:28.770: E/AndroidRuntime(9770): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-30 12:47:28.770: E/AndroidRuntime(9770): at dalvik.system.NativeStart.main(Native Method)
このエラーに注意してください
11-30 12:47:28.770: E/AndroidRuntime(9770): at com.KenanDeHart.thebasics.Showrole$1.onClick(Showrole.java:51)
ここで何が起こっているのか本当にわかりません。Javaを使用するのはこれが初めてで、使用してから2日しか経っていません。この質問が十分に説明的であることを願っています。私は調査を行ったが、役に立たなかったことを保証します。私は誰かが私に与えることができるどんな助けにも本当に感謝しています。ありがとうございました。