Quiero cambiar el color de fondo de un fragmento. Pero cuando hago clic en el botón no pasa nada.

En mi archivo XML de diseño de actividad principal importé el fragmento.

Aquí está mi código:

public class Top_Fragment extends Fragment implements View.OnClickListener {
    Button button;
    LinearLayout mLinearLayout;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.top_fragment, container, false);
    }

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

        button = (Button) getActivity().findViewById(R.id.button);
        mLinearLayout = (LinearLayout) getActivity().findViewById(R.id.layout);
    }

    @Override
    public void onClick(View v) {
        mLinearLayout.setBackgroundColor(Color.parseColor("#ffffbb33"));
    }
}
0
Guga Rai 9 mar. 2017 a las 08:17

2 respuestas

La mejor respuesta

Reemplazar

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.top_fragment,container, false);

}

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

    button = (Button)getActivity().findViewById(R.id.button);
    mLinearLayout = (LinearLayout)getActivity().findViewById(R.id.layout);
}

Con

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

    View fragmentView = inflater.inflate(R.layout.top_fragment,container, false)

    button = (Button)fragmentView.findViewById(R.id.button);
    button.setOnClickListener(this);
    mLinearLayout = (LinearLayout)fragmentView.findViewById(R.id.layout);

    return fragmentView;

}
0
Joe Maher 9 mar. 2017 a las 06:14

Su código es perfecto pero necesita agregar button.setOnClickListener (esto);

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

     button = (Button)getActivity().findViewById(R.id.button);
     mLinearLayout = (LinearLayout)getActivity().findViewById(R.id.layout);
     button.setOnClickListener(this); }
1
jayendrasinh vaghela 9 mar. 2017 a las 07:12