我是android开发的新手,并且创建了一个我一直坚持使用的小应用程序。
我用layout activity_main创建了一个activity,并用MainActivity.java进行了膨胀。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startFragment = new StartFragment();
getFragmentManager().beginTransaction().replace(R.id.dynamic_view, startFragment).commit();
setupOnClickListeners();
}
private void setupOnClickListeners() {
settingsButton = (Button) findViewById(R.id.settings);
startButton = (Button) findViewById(R.id.keypad);
settingsButton.setOnClickListener(this);
startButton.setOnClickListener(this);
}
@Override
public void onClick(View clickView) {
switch (clickView.getId()) {
case R.id.keypad: // select audio button
Log.d(LOG_TAG, "Clicked Start");
if (startFragment == null) {
startFragment = new StartFragment();
}
getFragmentManager().beginTransaction().replace(R.id.dynamic_view, startFragment).addToBackStack(null).commit();
break;
case R.id.settings:
Log.d(LOG_TAG, "Settings dialpad");
if (settingsFragment == null) {
settingsFragment = new SettingsFragment();
}
getFragmentManager().beginTransaction().replace(R.id.dynamic_view, settingsFragment).addToBackStack(null).commit();
break;
}
}
一旦我膨胀了设置片段,我就无法重新膨胀开始片段,在调试日志中,我发现点击通过了,但没有到达侦听器。
10-10 02:52:24.418 30630-30630/com.avaya.ihg
D/ViewRootImpl@bcd8f38[MainActivity]: ViewPostImeInputStage processPointer 1
10-10 02:52:24.496 30630-30630/com.avaya.ihg
D/ViewRootImpl@bcd8f38[MainActivity]: ViewPostImeInputStage processPointer 0
有什么可以帮助我的地方吗?提前谢谢。
发布于 2017-10-10 10:15:02
看着你的代码对我来说似乎有点困惑(不确定你是否解释了它?),特别是你设置侦听器的方式。
在Button的文档中,您应该设置类似以下内容的侦听器:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Code here executes on main thread after user presses button
}
从您的代码中可以看出,您正在将监听器设置为您的MainActivity,这应该会给您一个错误。
如果是这种情况,使用onClick()函数时,您可能希望对侦听器进行如下设置:
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.onClick(v);
}
});
发布于 2017-10-10 10:26:56
为什么不使用butterknife库?您可以将onClick事件设置为不同的视图...例如:
@OnClick({ R.id.door1, R.id.door2, R.id.door3 })
public void pickDoor(View view) {
if (view.getId() == R.id.door1) {
Toast.makeText(this, "door1", LENGTH_SHORT).show();
} else {
if(view.getId() == R.id.door2){
Toast.makeText(this, "Try again", LENGTH_SHORT).show();
}
.....
}
}
发布于 2017-10-11 19:12:17
我不知道发生了什么,但在关闭工作室并在设备上进行全面清理和重新运行后,它起作用了。
https://stackoverflow.com/questions/46656178
复制相似问题