首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >活动按钮未侦听

活动按钮未侦听
EN

Stack Overflow用户
提问于 2017-10-10 06:54:48
回答 3查看 95关注 0票数 0

我是android开发的新手,并且创建了一个我一直坚持使用的小应用程序。

我用layout activity_main创建了一个activity,并用MainActivity.java进行了膨胀。

代码语言:javascript
运行
复制
@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;
    }
}

一旦我膨胀了设置片段,我就无法重新膨胀开始片段,在调试日志中,我发现点击通过了,但没有到达侦听器。

代码语言:javascript
运行
复制
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

有什么可以帮助我的地方吗?提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2017-10-10 10:15:02

看着你的代码对我来说似乎有点困惑(不确定你是否解释了它?),特别是你设置侦听器的方式。

在Button的文档中,您应该设置类似以下内容的侦听器:

代码语言:javascript
运行
复制
button.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
         // Code here executes on main thread after user presses button
     }

从您的代码中可以看出,您正在将监听器设置为您的MainActivity,这应该会给您一个错误。

如果是这种情况,使用onClick()函数时,您可能希望对侦听器进行如下设置:

代码语言:javascript
运行
复制
startButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        MainActivity.this.onClick(v);
    }
});
票数 0
EN

Stack Overflow用户

发布于 2017-10-10 10:26:56

为什么不使用butterknife库?您可以将onClick事件设置为不同的视图...例如:

代码语言:javascript
运行
复制
@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();
    }
    .....
  }
}
票数 0
EN

Stack Overflow用户

发布于 2017-10-11 19:12:17

我不知道发生了什么,但在关闭工作室并在设备上进行全面清理和重新运行后,它起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46656178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档