【问题标题】:android button click not fire inside scrollviewandroid按钮单击不会在滚动视图内触发
【发布时间】:2017-03-21 01:56:17
【问题描述】:

滚动视图中的按钮有问题,这是我的 xml,

<ScrollView
    tools:context="com.francescovenica.remember.fragments.AddAlarmFragment"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:text="Salva"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginBottom="20dp"
            android:id="@+id/saveAlarm"/>
    </LinearLayout>
</ScrollView>

我在这里实例化按钮(我正在使用片段)

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_add_alarm, container, false);

        btn_saveAlarm = (Button)view.findViewById(R.id.saveAlarm);

        System.out.println("saveAlarm: " + btn_saveAlarm);

        return view;
    }

这是我的听众

btn_saveAlarm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                System.out.println("click");
            }
        });

点击没有触发,错误在哪里?

编辑-----

我找到了问题,但我不明白...

我在activityCreated中调用setUpView

公共无效 setUpView(){

    btn_saveAlarm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            saveAlarm();
        }
    });

alarm_date = Calendar.getInstance();


    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {

        @Override
        public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) {

            alarm_date.set(Calendar.YEAR,year);
            alarm_date.set(Calendar.MONTH,(month+1));
            alarm_date.set(Calendar.DAY_OF_MONTH,dayOfMonth);

            setTimePickerDialog();

        }
    });
}

我不知道为什么,但使用 alarm_date = Calendar.getInstance();按钮不工作,如果我评论它按钮工作正常....为什么 Calendar.getInstance 打破一切?

【问题讨论】:

  • btn_saveAlarm.setOnClickListener 你怎么称呼这个?
  • onActivityCreated 内
  • 按钮的点击监听器应该放在return view之前;
  • onActivityCreated 在 onCreateView 之后,所以监听器是正确的!
  • 您是否对同一个按钮有任何其他引用(例如,在活动中,使用相同的 id。)?

标签: android button scrollview listener


【解决方案1】:
<ScrollView
    tools:context="com.francescovenica.remember.fragments.AddAlarmFragment"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:clickable="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<!-- rest of code -->

android:clickable="true" 应该可以解决问题

【讨论】:

    猜你喜欢
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多