다음을 사용하여 클래스를 생성하고 onCreate 외부의 함수에서 실행하려고 시도했지만 실행하려고 시도했지만 항상 null 포인터 예외 오류가 발생합니다. 나는 봤 거든 결과없이 하루 종일 노력했다. 누군가가 onCreate 외부의 메서드에서 다음 클래스를 실행하는 방법을 이해하도록 도와 주시겠습니까? Create 내에서 호출하면 정상적으로 실행됩니다. 감사. onCreate 외부의 메소드에서 UI에 액세스하기
x.showDialog(this, act0, "restart0");
this
runOnUiThread(new Runnable() {
@Override
public void run() {
Dialog x = new Dialog();
x.showDialog(this, act0, "restart0");
}
});
//Dialog class
package com.calmchess.game1;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.Button;
/**
* Created by bobsmithzero on 10/16/17.
*/
public class Dialog extends Activity{
public void showDialog(final Context context, final Activity act00, final String dialogId0) {
switch (dialogId0) {
case ("pause0"):
Button paBtn0 = (Button) act00.findViewById(R.id.pabtn0);
paBtn0.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//set up pause dialog
final android.app.Dialog dialog0 = new android.app.Dialog(context);
dialog0.setContentView(R.layout.activity_controls);
dialog0.setCancelable(true);
Globals.pause0 = true;
Button button = (Button) dialog0.findViewById(R.id.pasbtn0);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog0.cancel();
Globals.pause0 = false;
}
});
Button reBtn0 = (Button) dialog0.findViewById(R.id.rebtn0);
reBtn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Restart restart0 = new Restart();
restart0.doRestart(context);
}
});
dialog0.show();
}
});
break;
case ("restart0"):
Log.e("error","this thAT");
//set up pause dialog
runOnUiThread(new Runnable() {
@Override
public void run() {
//set up pause dialog
android.app.Dialog dialog1 = new android.app.Dialog(context);
dialog1.setContentView(R.layout.activity_restart);
dialog1.setCancelable(true);
Globals.pause0 = true;
Button button = (Button) dialog1.findViewById(R.id.restart0);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Restart restart0 = new Restart();
restart0.doRestart(context);
}
});
dialog1.show();
}
});
break;
}
}
}
'대화'클래스가'활동 '으로 사용되지 않으면'활동 '을 확장해서는 안됩니다. 안드로이드의'Dialog' 클래스와의 혼란을 막기 위해 이름을 바꿀 수도 있습니다. –
더 적절한 이름을 지정하고 효과적인 로그를 사용하여 물건의 이름을 지정하면 실제로 도움이됩니다. – JoxTraex