活动按钮不听

Posted

技术标签:

【中文标题】活动按钮不听【英文标题】:Activity Button not listening 【发布时间】:2018-03-21 05:41:56 【问题描述】:

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

我使用布局 activity_main 创建了一个活动,并使用 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

任何点可以帮助我? 提前致谢。

【问题讨论】:

您发布的日志看起来不像错误日志。请发布您的整个 logcat 或显示的任何错误。您发布的是调试日志。 【参考方案1】:

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

从 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);
    
);

【讨论】:

【参考方案2】:

为什么不使用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();
    
    .....
  

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于活动按钮不听的主要内容,如果未能解决你的问题,请参考以下文章

活动加载时按钮默认选择问题

单击活动 1 中的按钮,如果单击按钮,则在活动 3 中显示 textview ...

在android中的不同活动中设置按钮上的时间

在父活动上按下后退按钮

离开活动并返回时保持设置按钮颜色

圆形自定义按钮的活动区域较小