OnClickListener不在片段中工作(在onCreateView方法中)

时间:2017-01-11 16:52:10

标签: android android-fragments

我在下面有这个片段代码:

public class Device extends Fragment {

    EditText deviceName;
    EditText numDevice;
    Button submitButton;
    private API api;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final View rootView = inflater.inflate(R.layout.device_fragment_view, container, false);

        deviceName = (EditText) rootView.findViewById(R.id.device_name);
        numDevice = (EditText)
                rootView.findViewById(R.id.num_of_devices);
        submitButton = (Button) rootView.findViewById(R.id.submit_device);

        Retrofit retroFit = new Retrofit.Builder()
                .baseUrl(getString(R.string.base_url))
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        api = retroFit.create(API.class);

        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.print("GOT INTO THE CLICK");
            }
        });

        return rootView;
    }
}

出于某种原因,我在submitButton上设置的点击监听器似乎无法正常工作。我似乎无法在代码中找到我做错的事情。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

尝试放置:

Toast.makeText(getActivity().getApplicationContext(), "You clicked the button", Toast.LENGTH_SHORT).show();

而不是

System.out.print("GOT INTO THE CLICK");

由于您的代码似乎没问题,您可能会在日志中遗漏它。

答案 1 :(得分:2)

使用Log是一个更好的主意(并且应该更好)。 正如我在评论中所说,您可以快速尝试将System.out.print("GOT INTO THE CLICK");
更改为Log.d("TAGOFTHEAPP","GOT INTO THE CLICK");

了解有关Android登录的好主意,请仔细阅读此链接:
https://developer.android.com/reference/android/util/Log.html

答案 2 :(得分:1)

在创建Toast之前尝试使用API进行检测:

public class Device extends Fragment {

EditText deviceName;
EditText numDevice;
Button submitButton;
private API api;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View rootView = inflater.inflate(R.layout.device_fragment_view, container, false);

    deviceName = (EditText) rootView.findViewById(R.id.device_name);
    numDevice = (EditText) rootView.findViewById(R.id.num_of_devices);
    submitButton = (Button) rootView.findViewById(R.id.submit_device);
    submitButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(),"GOT INTO THE CLICK",LENGTH_LONG).show();
        }
    });

    Retrofit retroFit = new Retrofit.Builder()
            .baseUrl(getString(R.string.base_url))
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    api = retroFit.create(API.class);

    return rootView;
   }
}