Button onClick方法仅适用于第二次单击

时间:2017-12-05 20:21:03

标签: android onclicklistener buttonclick

我的活动中遇到onClick方法问题。我在layoutInflater方法中使用onClick并在按钮点击时将布局更改为另一个布局,这没关系。但我在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()方法,但在第二次点击时。为什么?有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:-1)

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

我使用layoutinflater,因为这个方法仍然在片段中。使用新片段会导致Nestedfragments。谢谢你的回答。

这是代码

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