OnClickListener不在片段中触发

时间:2018-11-21 12:33:49

标签: java android onclick

我已经在论坛中搜索了答案,但是找不到与我的情况完全相符的问题。

我在触发onclicklistener时遇到问题。同一段代码在应用程序的其他部分中起作用,这使我感到困惑。

这是我的代码:

private static  final int RESULT_LOAD_IMAGES = 1;
TextView filepath_name;
EditText varighed, navn;
Spinner genre, kategori;
Button uploadImg, opret_knap;

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);

    uploadImg = (Button) view.findViewById(R.id.billede_button);
    opret_knap = (Button) view.findViewById(R.id.addOpskrift);
    varighed = (EditText) view.findViewById(R.id.opskrift_varighed);
    navn = (EditText) view.findViewById(R.id.opskrift_navn);
    genre = (Spinner) view.findViewById(R.id.opskrift_genre);
    kategori = (Spinner) view.findViewById(R.id.opskrift_kategori);

    filepath_name = (TextView) view.findViewById(R.id.billede_path);
    uploadImg.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
             startActivityForResult(galleryIntent, RESULT_LOAD_IMAGES);
         }

    });

    opret_knap.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Tilføjopskrift();
        }
    });

    return view;
}

还有XML

<Button
        android:id="@+id/billede_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Tilføj billede"
        />
<TextView android:id="@+id/billede_path"
          android:layout_width="wrap_content"
          android:layout_height="32dp"
          android:layout_gravity="center" />

<Button android:id="@+id/addOpskrift"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="30dp"
        android:text="Opret"/>

3 个答案:

答案 0 :(得分:2)

在您的XML中,您为按钮赋予了ID opret_knap

<Button
    android:id="@+id/opret_knap"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="30dp"
    android:text="Opret"/>

但是您正在使用addOpskrift

进行访问

更改

opret_knap = (Button) view.findViewById(R.id.addOpskrift);

 opret_knap = (Button) view.findViewById(R.id.opret_knap);

答案 1 :(得分:1)

问题似乎是您未指定片段应访问的布局。

代替:

super.onCreateView()

使用

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

希望有帮助。

答案 2 :(得分:0)

您的问题是您没有正确地理解新的观点。 您需要使用:

View view = super.onCreateView(inflater, container, savedInstanceState);

代替:

private static final int RESULT_LOAD_IMAGES = 1; TextView filepath_name; EditText varighed, navn; Spinner genre, kategori; Button uploadImg, opret_knap; @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.your_file_name, container, false); uploadImg = (Button) view.findViewById(R.id.billede_button); opret_knap = (Button) view.findViewById(R.id.addOpskrift); varighed = (EditText) view.findViewById(R.id.opskrift_varighed); navn = (EditText) view.findViewById(R.id.opskrift_navn); genre = (Spinner) view.findViewById(R.id.opskrift_genre); kategori = (Spinner) view.findViewById(R.id.opskrift_kategori); filepath_name = (TextView) view.findViewById(R.id.billede_path); uploadImg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(galleryIntent, RESULT_LOAD_IMAGES); } }); opret_knap.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Tilføjopskrift(); } }); return view; }

只需复制并粘贴。

{{1}}