只需单击按钮即可删除布局

时间:2017-01-05 19:34:25

标签: android android-studio

我试图通过点击按钮删除布局。

我在MainActivity.java文件中有这个方法:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_removeView"
    android:onClick="goBack" />

在我要删除的视图中单击此按钮时会触发它:

dsend(to, from, count)
char *to, *from;
int count;
{
    int n;
    for(n=0; n!=count/8; n+=8){
        *to = *from++;
        *to = *from++;
        *to = *from++;
        *to = *from++;
        *to = *from++;
        *to = *from++;
        *to = *from++;
        *to = *from++;
    }
    for(; n!=count; n++)
    {
        *to = *from++;
    }
}

但它给了我这样的信息:

  

java.lang.IllegalStateException:找不到方法goBack(View)   android的一个父或祖先上下文:onClick

但是MainActivity是我所有方法的主要文件,所以我不确定为什么它找不到它。

我应该把它放在哪里才能找到它?

谢谢!

2 个答案:

答案 0 :(得分:1)

要避免此类问题,请从布局中删除onClick,而不是以编程方式添加OnClickListener

首先将id添加到元素

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_removeView"
android:id="@+id/button"
/>

第二个添加监听器

getView().findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
  //here Your code
  }
});

如果使用片段最佳位置将是onCreateView方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_layout, container, false);

    v.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
        //here Your code
      }
    });

    return v;
}

您还可以将片段设置为侦听器,如:

 v.findViewById(R.id.button).setOnClickListener(this);

在这种情况下,fragement必须实现OnClickListener接口。

答案 1 :(得分:1)

使用parent.removeViewAt(0)其中'0'是孩子的索引。它删除了特定索引处的视图。