Для работы кнопки нужно нажать дважды - почему? - PullRequest
0 голосов
/ 04 января 2019

Моя проблема в том, что на кнопке в моей активности нужно дважды щелкнуть, чтобы выполнить код, написанный в методе onClick.Пока я делюсь своим кодом активности и кодом файла макета.Пожалуйста, помогите мне решить проблему.

Активность (фрагмент)

public class SelfFamilyInfoActivity extends Fragment {

Button btnUpdateFamily;

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

    View v = inflater.inflate(R.layout.self_mem_details_family_info, 
  container, false);

    try {

        btnUpdateFamily = v.findViewById(R.id.btnUpdateFamily);

        btnUpdateFamily.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Toast.makeText(getActivity(), "Button Clicked", 
        Toast.LENGTH_SHORT).show();

            }
        });


    } catch (Exception e) {
        e.printStackTrace();
    }

    return v;

}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}
}

Файл макета

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="vertical">

<ScrollView

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:scrollbars="vertical">

    <LinearLayout

        android:id="@+id/llLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="12dp"
        android:orientation="vertical">


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:gravity="center">

                <Button
                    android:id="@+id/btnUpdateFamily"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:layout_marginBottom="5dp"
                    android:background="@drawable/button_background"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:text="Update Family Info"
                    android:textColor="@color/buttonTextColorWhite"
                    android:textSize="18sp" />

            </LinearLayout>


        </LinearLayout>

 </ScrollView>
 </android.support.v4.widget.NestedScrollView>

Пока этот фрагмент инициализируется в другомОсновная деятельность.

1 Ответ

0 голосов
/ 04 января 2019

Для фрагмента хорошо использовать все ваши клики в методе onViewCreated. Может быть, просмотр не подготовлен, но вы начинаете нажимать. И вы используете try catch блок, вы видели какие-либо исключения в вашем журнале. Я не уверен. Но вы можете попробовать прослушиватель кликов по вашему onViewCreated методу.

ОБНОВЛЕНО попробуйте использовать этот код. этот код работает в моем разделе

 Button btnUpdateFamily;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.self_mem_details_family_info,
            container, false);

    return v;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    btnUpdateFamily = view.findViewById(R.id.btnUpdateFamily);

    btnUpdateFamily.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Toast.makeText(getActivity(), "Button Clicked",
                    Toast.LENGTH_SHORT).show();

        }
    });


}
...