에서 버튼의 onclick을 생성 버튼 프로그래밍 Navigation.java 만들어집니다. 초기 메뉴 nav.mainMenu()
이 올바르게 호출되고 버튼이 예상대로 생성됩니다. 내 문제는 버튼을 클릭해도 아무 일도 일어나지 않는다는 것입니다.안드로이드 프로그래밍 내가 MainActivity.java</strong><strong>에 <code>onClick</code> 스위치 방식이 클래스
logcat에 오류 스택 추적이 없습니다. onclick 메서드에 로그를 저장하려고 시도했지만 멀리는 얻을 수 없습니다. 에뮬레이터가 작동하는 것처럼 보이며 멈추거나 충돌하지 않습니다.
코드를 메뉴로 보내면 해당 클래스에 활동이 있다고 가정합니까? 그래서 MainActivity
에 onClickListener
을 사용하려고하면 인식하지 못합니까?
v.getId()
에서 무엇을 기대해야하는지 확실하지 않습니다. MainActivity.javaR.id.btnGame
?
MainActivity.java
public class MainActivity extends Activity implements View.OnClickListener {
public Navigation nav = new Navigation(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.empty);
nav.mainMenu();
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.btnGame:
nav.game();
break;
}
}
}
Navigation.java
public class Navigation {
Button btnGame;
Context mContext;
Navigation(Context mContext) {
this.mContext = mContext;
}
public void mainMenu() {
LinearLayout ll = new LinearLayout(mContext);
ll.removeAllViews();
LinearLayout.LayoutParams llP = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(llP);
ll.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
btnGame = new Button(mContext.getApplicationContext());
btnGame.setLayoutParams(btnParams);
btnGame.setText("Play Game");
ll.addView(btnGame);
Activity activity = (Activity) mContext;
activity.setContentView(ll);
}
public void game() {
Toast.makeText(mContext, "I dont see this", Toast.LENGTH_SHORT).show();
}
}
내가 Navigation.java에있는 버튼을
.setOnClickListener()
를 추가하는 시도했지만 난 못해 문맥의 권리를 얻는다면, 나는 그것이 무엇인지 알지 못한다. 누락.내비게이션 MainActivity 또는 Activity에 Navigation.java을 입력하면 오류가 발생합니다. 응용 프로그램 후
로그 캣은 에뮬레이터에 내장되었습니다
09-30 17:43:59.655 7038-7038/? I/art: Not late-enabling -Xcheck:jni (already on)
09-30 17:43:59.655 7038-7038/? W/art: Unexpected CPU variant for X86 using defaults: x86
09-30 17:43:59.854 7038-7038/com.fomtirth.barcodebattle W/System: ClassLoader referenced unknown path: /data/app/com.fomtirth.barcodebattle-2/lib/x86
09-30 17:43:59.867 7038-7038/com.fomtirth.barcodebattle I/InstantRun: starting instant run server: is main process
09-30 17:44:00.230 7038-7066/com.fomtirth.barcodebattle I/OpenGLRenderer: Initialized EGL, version 1.4
09-30 17:44:00.230 7038-7066/com.fomtirth.barcodebattle D/OpenGLRenderer: Swap behavior 1
09-30 17:44:00.230 7038-7066/com.fomtirth.barcodebattle W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
09-30 17:44:00.230 7038-7066/com.fomtirth.barcodebattle D/OpenGLRenderer: Swap behavior 0
09-30 17:44:00.234 7038-7066/com.fomtirth.barcodebattle D/EGL_emulation: eglCreateContext: 0x9baa38c0: maj 2 min 0 rcv 2
09-30 17:44:00.241 7038-7066/com.fomtirth.barcodebattle D/EGL_emulation: eglMakeCurrent: 0x9baa38c0: ver 2 0 (tinfo 0x99a887d0)
09-30 17:44:00.293 7038-7066/com.fomtirth.barcodebattle D/EGL_emulation: eglMakeCurrent: 0x9baa38c0: ver 2 0 (tinfo 0x99a887d0)
09-30 17:44:00.400 7038-7066/com.fomtirth.barcodebattle D/EGL_emulation: eglMakeCurrent: 0x9baa38c0: ver 2 0 (tinfo 0x99a887d0)
09-30 17:44:00.460 7038-7066/com.fomtirth.barcodebattle D/EGL_emulation: eglMakeCurrent: 0x9baa38c0: ver 2 0 (tinfo 0x99a887d0)
어떤 오류가 있습니까? 그들을 보여줄 수 있습니까? –
오류가 발생하지 않습니다. logcat은 빌드 후에 비어 있습니다. 위에서 빌드 출력을 포함하도록 편집합니다. – TomFirth
오류를 걸러 냈습니까? –