私のAndroidアプリケーションでエラーが発生しました。 pauseBでsetVisible()を呼び出すと、pauseBがnullに初期化されるため、アプリケーションがクラッシュします。 startBでsetVisible()を呼び出すとうまく動作するので、奇妙です。Button.setVisibilityクラッシュAndroidアプリケーション
...imports...
public class MainActivity extends AppCompatActivity {
public static boolean toggle=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void beginGame(View v)
{
Button startB= (Button)v.findViewById(R.id.startButton);
startB.setVisibility(View.GONE);
Button pauseB = (Button)v.findViewById(R.id.pauseButton);
pauseB.setVisibility(View.VISIBLE);
rest of method...
}
rest of code...
}
ここactivity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.placemultiplebuttons_android_examples.com.MainActivity" >
<Button
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Start!"
android:onClick="beginGame" />
<Button
android:id="@+id/pauseButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/startButton"
android:layout_alignBottom="@+id/startButton"
android:layout_toRightOf="@+id/startButton"
android:text="Pause"
android:onClick="pauseGame" />
</RelativeLayout>
がAndroidStudioによって与えられる例外で
MainActivity.java:ここに関連するコードである
例外
FATAL EXCEPTION: main
Process: com.example.jackson.myfirstapp, PID: 2285
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setVisibility(int)' on a null object reference
at com.example.jackson.myfirstapp.MainActivity.beginGame(MainActivity.java:29)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
問題を修正再表示は、エラーが、私はそれを把握することはできません、私の人生のためにライン
pauseB.setVisibility(View.VISIBLE);
に起こります。私がAndroidの初心者であるので、ここでの助けに感謝します。あなたのお時間をありがとうございました!
コードサンプルには 'pauseGame(View v){}'はありません。 – Enzokie
彼はコードで 'pauseGame'メソッドを提供していませんが(これは別のエラーを与えるでしょう)、私はそれが良い初心者の質問と一般的な間違いの一つだと思う。 '-3'がなぜそれに投票したのか、ほとんど理解できていない。厳しすぎ。 – Youngjae