Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Files Under the builder folder are generated and dhould not be edited

Olá! Fiz as alterações na aula sobre butterknife e, quando mandei compilar apareceu a mensagem acima... o arquivo que mostram é o MainActivity$$ViewBinder. É algo que foi gerado automaticamente então não faço ideia do porquê da mensagem... Alguém faz ideia? Deve ser até simples de resolver... Agradeço desde já!


// Generated code from Butter Knife. Do not modify!
package br.com.techcaicara.ichat_alura.Activities;

import android.view.View;
import br.com.techcaicara.ichat_alura.Activities;
import butterknife.Unbinder;
import butterknife.internal.DebouncingOnClickListener;
import butterknife.internal.Finder;
import butterknife.internal.ViewBinder;
import java.lang.IllegalStateException;
import java.lang.Object;
import java.lang.Override;

public class MainActivity$$ViewBinder<T extends Activities.MainActivity> implements ViewBinder<T> {
  @Override
  public Unbinder bind(final Finder finder, final T target, Object source) {
    InnerUnbinder unbinder = createUnbinder(target);
    View view;
    view = finder.findRequiredView(source, 2131427413, "field 'button' and method 'enviarMensagem'");
    target.button = finder.castView(view, 2131427413, "field 'button'");
    unbinder.view2131427413 = view;
    view.setOnClickListener(new DebouncingOnClickListener() {
      @Override
      public void doClick(View p0) {
        target.enviarMensagem();
      }
    });
    view = finder.findRequiredView(source, 2131427412, "field 'editText'");
    target.editText = finder.castView(view, 2131427412, "field 'editText'");
    view = finder.findRequiredView(source, 2131427414, "field 'listaDeMensagens'");
    target.listaDeMensagens = finder.castView(view, 2131427414, "field 'listaDeMensagens'");
    return unbinder;
  }

  protected InnerUnbinder<T> createUnbinder(T target) {
    return new InnerUnbinder(target);
  }

  protected static class InnerUnbinder<T extends Activities.MainActivity> implements Unbinder {
    private T target;

    View view2131427413;

    protected InnerUnbinder(T target) {
      this.target = target;
    }

    @Override
    public final void unbind() {
      if (target == null) throw new IllegalStateException("Bindings already cleared.");
      unbind(target);
      target = null;
    }

    protected void unbind(T target) {
      view2131427413.setOnClickListener(null);
      target.button = null;
      target.editText = null;
      target.listaDeMensagens = null;
    }
  }
}
7 respostas

Welligton, tudo bem ?

Cara isso é gerado pelo butterknife, o erro deve estar na sua activity. Posta o código ai para gente dar uma olhadinha.

Abraços

Oi Matheus! Comigo beleza, de férias! :) E contigo?

Seguinte, Essa é a MainActivity, tem muito código comentado, não quis tirar porque ia fazer um resumo no final do curso, talvez seja por isso que deu erro... Vou tentar limpar e testar, se você tiver alguma dica, agradeço!

Abraço!

package br.com.techcaicara.ichat_alura.Activities;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.inject.Inject;

import br.com.techcaicara.ichat_alura.Modelos.Mensagem;
import br.com.techcaicara.ichat_alura.R;
import br.com.techcaicara.ichat_alura.adapters.MensagemAdapter;
import br.com.techcaicara.ichat_alura.br.com.techcaicara.ichat_alura.app.ChatApplication;
import br.com.techcaicara.ichat_alura.callback.EnviaMensagemCallback;
import br.com.techcaicara.ichat_alura.callback.OuvirMensagemCallback;
import br.com.techcaicara.ichat_alura.component.ChatComponent;
import br.com.techcaicara.ichat_alura.service.ChatService;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import dagger.Component;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {

    private int idDoClient=1;
    //não podem ser private
    @BindView(R.id.enviar)
    Button button;
    @BindView(R.id.et_texto)
    EditText editText;
    @BindView(R.id.lv_mensagem)
    ListView listaDeMensagens;


    private List<Mensagem>mensagens;
    private ChatComponent component;
    @Inject
    public ChatService chatService;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ButterKnife.bind(this);

        ChatApplication app=(ChatApplication)getApplication();
        component=app.getComponent();
        component.inject(this);

        //listaDeMensagens=(ListView)findViewById(R.id.lv_mensagem);

        mensagens= new ArrayList<>();//Arrays.asList(new Mensagem(1, "Olá alunos Android"), new Mensagem(2,"oi"));
        MensagemAdapter adapter=new MensagemAdapter(idDoClient, mensagens, this);
        listaDeMensagens.setAdapter(adapter);
        //button=(Button)findViewById(R.id.enviar);
        //editText=(EditText)findViewById(R.id.et_texto);
        //Retrofit retrofit=new Retrofit.Builder()
        //        .baseUrl("http://192.168.0.100:8080/")
        //        .addConverterFactory(GsonConverterFactory.create())
        //        .build();

        //Instanciando o chatServive e ouvindo as mensagens
        //chatService=retrofit.create(ChatService.class);   //new ChatService(this);
        //Call<Mensagem>call=chatService.ouvirMensagem();
       // call.enqueue(new OuvirMensagemCallback(this));

       // chatService.ouvirMensagem();
        //button.setOnClickListener(new View.OnClickListener() {
            //@Override
            //public void onClick(View view) {
               // chatService.enviar(new Mensagem(idDoClient,editText.getText().toString()))
               //         .enqueue(new EnviaMensagemCallback());
            //}
       // });
          //      enviarMensagem();
    }

    @OnClick(R.id.enviar)
    public void enviarMensagem(){
        chatService.enviar(new Mensagem(idDoClient,editText.getText().toString()))
                .enqueue(new EnviaMensagemCallback());

    }

    public void colocarNalista(Mensagem mensagem){
        mensagens.add(mensagem);
        MensagemAdapter adapter=new MensagemAdapter(idDoClient,mensagens, this);
        listaDeMensagens.setAdapter(adapter);

        //chatService.ouvirMensagem();
            ouvirMensagem();
    }

    public void ouvirMensagem(){
        Call<Mensagem>call=chatService.ouvirMensagem();
        call.enqueue(new OuvirMensagemCallback(this));
    }
    }

Estou olhando com mais calma, me parece que o problema ocorre porque o bendito Compilador não encontra meu pacote br.com.techcaicara.ichat_alura.Activities; Mas ele existe! :) Já dei clean, rebuild... Nada...

Coisas assim (arquivos gerados sem a gente nem saber) me fizeram fugir do NetBeans... Agora no Android não tem muita opção...

O que Fazer? :|

Weligton, tudo bem ?

Cara o butterknife vai substituir todas as annotations por código, o interessante é que é feito em tempo de compilação, diferentemente de reflection que é em execução.

Para ele conseguir trocar, usamos o método ButterKnife.bind(), ele deve estar dentro do onCreate, contudo a visibilidade deste método precisa ser public , para poder ser acessado de qualquer lugar.

Espero ter ajudado.

Abraços

Oi Matheus! Obrigado pelo retorno! Eu coloquei o ButterKnife.bind(this); no MainActivity, dentro de onCreate, como o instrutor orientou... Como padrão o onCreate está como protected, mas fiz um teste como public e o ero continuou igual... Era isso que você queria dizer?

Pelo visto só eu tive esse erro, deve ser algo simples de resolver. Quando aparece o erro e é mostrada aquele primeiro código que enviei, no Messages Gradle Build aparecem três erros: "Cannot find symbol class Activities": Para a linha import br.com.techcaicara.ichat_alura.Activities;

"package Activities does not exist": Para a linha public class MainActivity$$ViewBinder implements ViewBinder {

"package Activities does not exist": Para a linha protected static class InnerUnbinder implements Unbinder {

Mas, como disse, o pacote existe... :|

solução!

Pode fazer um teste ?

Colocar os pacotes em minúsculo ?

Ele realmente ainda está falando que o pacote não existe, o que me assusta um pouco.

Só para agradeçer! (fechei o post sem isso!) Valeu!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software