android OnClickListener侦听器不适用于框架布局

sgtfey8w  于 2023-02-17  发布在  Android
关注(0)|答案(6)|浏览(130)

我有一个Activity包含用于片段过渡的帧布局。帧布局正在加载片段,现在我想在帧布局上设置单击侦听器。但单击侦听器工作正常。
这是包含片段帧布局的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".FragmentActivity"
tools:showIn="@layout/app_bar_balance"
android:id="@+id/layout">

<FrameLayout
    android:name="com.dd.cotech.Fragments.HomeFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragmentWindow"
    tools:layout="@layout/fragment_home" />

以下是侦听器编码

findViewById(R.id.fragmentWindow).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(FragmentActivity.this, "I am click", Toast.LENGTH_SHORT).show();
        }
    });

有人帮忙吗?

u5rb5r59

u5rb5r591#

我认为你做错了按钮的声明。
试试这个例子:

final Button button = (Button) findViewById(R.id.button_id);
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Perform action on click
             }
         });
a0x5cqrl

a0x5cqrl2#

试试这样:

public class FragmentActivity implements LocationListener, OnTouchListener {

    private FrameLayout mFrame;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        mFrame = (FrameLayout) findViewById(R.id.fragmentWindow);
        mFrame.setOnTouchListener(this);
    }

    public boolean onTouch(View v, MotionEvent e) {

        if(mFrame == v) {

           Toast.makeText(FragmentActivity.this, "I am click", Toast.LENGTH_SHORT).show();

            return true;
        }

        return false;
    }
}
oo7oh9g9

oo7oh9g93#

首先实现OnClickListener

public class Avtivity_Name extends Fragment implements View.OnClickListener {

然后获取OnCreateView内部的视图

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final View rootview = inflater.inflate(R.layout.main, container, false);
 FrameLayout   layout = (FrameLayout) rootview.findViewById(R.id.fragmentWindow);
    layout.setOnClickListener(this);
    return rootview;
}

并从onCreateView外部创建onClick

public void onClick(View v) {
 Toast.makeText(FragmentActivity.this, "I am click listner", Toast.LENGTH_SHORT).show();
}
ugmeyewa

ugmeyewa4#

如果视图嵌套过多,就可能发生这种情况。
例如

<androidx.constraintlayout.widget.ConstraintLayout    
        <androidx.constraintlayout.widget.ConstraintLayout    
            <androidx.constraintlayout.widget.ConstraintLayout    
                   <androidx.constraintlayout.widget.ConstraintLayout
                       <FrameLayout
db2dz4w8

db2dz4w85#

添加clickable属性,如下所示:

<FrameLayout
    android:name="com.dd.cotech.Fragments.HomeFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragmentWindow"
    tools:layout="@layout/fragment_home"
    android:clickable="false" />
uidvcgyl

uidvcgyl6#

在FrameLayout标签中添加android:clickable="true"
如果一次也不起作用,请尝试fragment_home xml的基本布局标记中的这行代码
希望这对你有帮助。

相关问题