Butterknife和碎片

时间:2015-10-27 22:21:10

标签: android butterknife

我正在使用Butterknife而且我遇到了问题,当我想要为另一个片段更改片段时,应用程序失败了。这是我的第一个片段

@Bind(R.id.tilNombre) TextInputLayout tilNombres;
@Bind(R.id.tilApellido) TextInputLayout tilApellido;
@Bind(R.id.tilDocumento) TextInputLayout tilDocumento   ;
@Bind(R.id.btnContinuar) Button btnContinuar;
public RegistroFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_registro, container, false);
    ButterKnife.bind(this, view);
    return view;
}

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

void app(){
    tilNombres.setHint(getResources().getString(R.string.nombres));
    tilApellido.setHint(getResources().getString(R.string.apellidos));
    tilDocumento.setHint(getResources().getString(R.string.licencia));

    events();
}

void events(){

    btnContinuar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RegistroTwoFragment registroTwoFragment = new RegistroTwoFragment();
            android.support.v4.app.FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.contenedorRegistro, registroTwoFragment).commit();
        }
    });
}

在那段代码中我没有任何问题,问题出在下一部分

public class RegistroTwoFragment extends Fragment {

@Bind(R.id.tilCorreo) TextInputLayout tilCorreo;
@Bind(R.id.tilClave) TextInputLayout tilClave;
@Bind(R.id.btnRegistrar) TextInputLayout btnRegistrar;
@Bind(R.id.tviRetroceder) TextInputLayout tviRetroceder;

public RegistroTwoFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_registro_two, container, false);
    ButterKnife.bind(this,view);
    return view;
}

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

void app(){
    tilCorreo.setHint(getResources().getString(R.string.correo));
    tilClave.setHint(getResources().getString(R.string.contrasena));

    events();
}

void events(){
    tviRetroceder.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RegistroFragment registroFragment = new RegistroFragment();
            android.support.v4.app.FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.contenedorRegistro, registroFragment).commit();
        }
    });
}

logcat说:无法绑定com.example.aato.ciudadano.fragments.RegistroTwoFragment的视图;有谁知道这个问题??

1 个答案:

答案 0 :(得分:0)

要检查的一些事项:

  1. 确保fragment_registro_two布局实际包含@Bind(R.id.xyz)语句中使用的资源ID。
  2. 确保为每个资源绑定的每个变量使用正确的类型。在您的情况下,您确定TextInputLayout实际上是所有绑定资源的正确类型吗?