我想为我的片段中的每个按钮添加longClickListener。为此,我编写了这段代码,我在OnCreate()中调用它。我的项目是Tabbed Activity。
我在我的主要活动中实现了OnLongClickListener。
public class MainActivity extends AppCompatActivity implements View.OnLongClickListener
我在MainActivity.java中也有onLongClick方法
@Override
public boolean onLongClick(View v) {.......}
这是我在onCreate();
中的方法public void InflateFragments(){
final RelativeLayout lay = (RelativeLayout) findViewById(R.id.Page1Lay);
View viev = getLayoutInflater().inflate(R.layout.fragment_page1, lay, false);
for(int i = 0; i < IDs.length; i++){
Button button = (Button) viev.findViewById(IDs[i]);
if(button != null)
button.setOnLongClickListener(this);
Log.i("OK","Listener set on button : " + IDs[i]);
}
}
ID,是一个包含我的按钮id的int数组。这个代码可以到达我的片段中的每个按钮,并为每个按钮设置OnLongClickListener,因为没有异常或任何错误。我可以查看Log.i()的控制台上的消息。
但是当我在虚拟设备上运行此代码时,当我点击很长时间时没有任何事情发生。我不知道为什么。
我的按钮是布局,我的每个按钮都有;
android:longClickable="true"
我的main_activity.xml;
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.aslan.rte3.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/appbar_padding_top"
android:theme="@style/AppTheme.AppBarOverlay"
android:background="@android:color/black">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="center"
app:tabMode="scrollable" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="#E0DFDE">
</android.support.v4.view.ViewPager>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#E0DFDE">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="match_parent"
ads:adSize="SMART_BANNER"
ads:adUnitId="..."
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true" />
</FrameLayout>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:0)
而不是:
View viev = getLayoutInflater().inflate(R.layout.fragment_page1, lay, false);
试试这个:
View viev = LayoutInflater.from(this).inflate(R.layout.fragment_page1, lay, false);
答案 1 :(得分:0)
尝试一次;
@Override
public boolean onLongClick(View v) {
Log.e("ID", ""+v.getId());
return true;
}
然后,检查此处的视图ID是否与按钮的ID相同。