【问题标题】:Button onClick method works on second click only按钮 onClick 方法仅适用于第二次点击
【发布时间】:2018-05-19 14:37:34
【问题描述】:

我在我的活动中遇到了onClick 方法的问题。我在onClick 方法中使用layoutInflater 并在按钮单击时将布局更改为另一个布局,没关系。但我在onClick 有自己的方法。它在第一次点击时不起作用。它只适用于第二次点击。

   @Override
public void onClick(View v) {
    getTextA();
    mFrameLayout.removeAllViews();
    LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = layoutInflater.inflate(R.layout.soru, null);
    mFrameLayout.addView(v);
    Button bt = new Button(this);
    bt.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    mFrameLayout.addView(bt);
    bt.setText(textA);
}

textA 来自getTextA() 方法,但在第二次点击时。为什么 ?任何人都可以帮助我吗?

【问题讨论】:

  • 你的 getTextA() 里有什么?
  • 我打赌那是另一个不了解多线程的人......而 getTextA 只是开始一些异步调用......就像无数类似的问题一样。
  • 这只是一个假设。从他的分数来看,OP 看起来像是 android dev 的新手。如果从 bt 按钮获取文本,getTextA() 将不起作用,因为它在第一次调用时尚未设置(另一个假设)。
  • @yusuf korkmaz - 看起来你没有展示足够多的代码,所以我们不知道为什么它不起作用。如果您仍然需要帮助,请编辑您的问题,例如分享 getTextA() 的代码

标签: android onclicklistener buttonclick


【解决方案1】:

我解决了这个问题。问题出在 onClick 方法中的 layoutinflater 中。所以我把那个layoutinflater代码放到新的方法调用getQuestion()中。并在我的 getTextA() 方法中调用 getQuestion() 方法。解决了。​​

我使用 layoutinflater 是因为这个方法还在一个片段中。使用新片段会导致嵌套片段。感谢您的回答。

这里是代码

public void onClick(View v) {
    getTextA();
}`

public void getTextA(){
  //Method details.
  getQuestion();
}

public void getQuestion(){
mFrameLayout.removeAllViews();
LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = layoutInflater.inflate(R.layout.soru, null);
mFrameLayout.addView(v);
Button bt = new Button(this);
bt.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
mFrameLayout.addView(bt);
bt.setText(textA);
}

【讨论】:

  • 问题在于 onClick 方法中的 layoutinflater 看起来像百万猴子编程风格......现在你根本没有调用旧的 getTextA。真正的问题是您在使用之前没有获得textA
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多