Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Erro ao Editar, não esta trazendo a URL da Foto.

Ao Clicar em Editar na minha aplicação ela traz quase todas as informações fica faltando apenas a URL da foto, ou seja ao salvar como ficou em branco na edição ele perde a foto, se poderem me ajudar agradeço, segue minhas classes.

Classe FormularioHelp.

    public void Preencheformulariopsw(Password password) {
        nomeServidor.setText(password.getNome());
        numeroIP.setText(password.getIp());
        campoLogin.setText(password.getLogin());
        campoSenha.setText(password.getSenha());
        campoSenhaRoot.setText(password.getSenhaRoot());
        campoSenhaRoot.setText(password.getSenhaRoot());
        campoURL.setText(password.getUrl_caminho());

        this.password = password;
    }

DAO

    private ContentValues DadosPassword(Password password) {
        ContentValues dados = new ContentValues();

        dados.put("nomeServidor", password.getNome());
        dados.put("ip", password.getIp());
        dados.put("Login", password.getLogin());
        dados.put("senha", password.getSenha());
        dados.put("loginRoot", password.getLoginRoot());
        dados.put("senhaRoot", password.getSenhaRoot());
        dados.put("urlcaminho", password.getUrl_caminho());

        return dados;
    }

Home/Botão Editar

        MenuItem editar = menu.add("Editar");
        editar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
                Password psw = (Password) password.getItemAtPosition(info.position);
                Intent intentvaiproformulario = new Intent(HomeActivity.this, pswgenericoActivity.class);
                intentvaiproformulario.putExtra("password", psw);
                startActivity(intentvaiproformulario);

                return false;
            }
        });
10 respostas

Wolney, parece que há algo errado no password.getUrl_caminho(). Quem está chamando o setter dele está vindo com conteúdo? Coloque um log para ter certeza.

E um outro assunto: por que essa classe se chama Password e tem dados como login, senha e url? O

Cara não da erro apenas não traz nada, e no meu caso quando assisto as aulas procuro não fazer a mesma coisa procura utilizar o que aprende fazendo algo que de fato vá se tornar um produto.

no meu caso estou pegando a mesma teoria dos alunos porem estou fazendo um app de armazenamento de senhas.

                                          08-22 20:36:54.155 1605-2254/system_process I/ActivityManager: START u0 {cmp=br.com.inforsoftcom.securitypassword/.pswgenericoActivity (has extras)} from uid 10070 on display 0

                                                               --------- beginning of main
08-22 20:36:54.164 2488-2523/br.com.inforsoftcom.securitypassword E/Surface: getSlotFromBufferLocked: unknown buffer: 0x95f0bca0
08-22 20:36:54.403 1189-1189/? W/SurfaceFlinger: couldn't log to binary event log: overflow.
08-22 20:36:54.437 1605-1630/system_process I/ActivityManager: Displayed br.com.inforsoftcom.securitypassword/.pswgenericoActivity: +264ms
08-22 20:36:54.452 2488-2523/br.com.inforsoftcom.securitypassword E/Surface: getSlotFromBufferLocked: unknown buffer: 0x95f09310
08-22 20:36:54.702 1189-1189/? W/SurfaceFlinger: couldn't log to binary event log: overflow.
08-22 20:36:56.982 1919-1919/com.android.inputmethod.latin I/LatinIME: Starting input. Cursor position = 5,5
08-22 20:36:57.594 2488-2523/br.com.inforsoftcom.securitypassword E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa0b4b040
08-22 20:36:59.629 1919-1919/com.android.inputmethod.latin I/LatinIME: Starting input. Cursor position = 0,0
08-22 20:37:02.187 1236-1550/? D/AudioFlinger: mixer(0xb4500000) throttle end: throttle time(440)
08-22 20:37:02.822 1605-1931/system_process I/ActivityManager: START u0 {cmp=br.com.inforsoftcom.securitypassword/.HomeActivity} from uid 10070 on display 0
08-22 20:37:02.836 2488-2488/br.com.inforsoftcom.securitypassword I/Choreographer: Skipped 41 frames!  The application may be doing too much work on its main thread.
08-22 20:37:02.912 2488-2488/br.com.inforsoftcom.securitypassword D/DynamitePackage: Instantiating com.google.android.gms.ads.ChimeraAdManagerCreatorImpl
08-22 20:37:02.913 2488-2488/br.com.inforsoftcom.securitypassword I/Ads: Starting ad request.
08-22 20:37:03.133 2508-3621/com.google.android.gms D/GassUtils: Found app info for package br.com.inforsoftcom.securitypassword:1. Hash: b04f30ec459f15f1ef71811e5421579014cac674859424f5ea9e9283d495b092
08-22 20:37:03.133 2508-3621/com.google.android.gms D/GassSignalComposer: Ad attest is not enabled
08-22 20:37:03.213 1605-2254/system_process I/AccountManagerService: getTypesVisibleToCaller: isPermitted? true
08-22 20:37:03.375 1919-2664/com.android.inputmethod.latin E/Surface: getSlotFromBufferLocked: unknown buffer: 0xae475130
08-22 20:37:03.377 1605-1630/system_process I/ActivityManager: Displayed br.com.inforsoftcom.securitypassword/.HomeActivity: +524ms
08-22 20:37:03.398 2488-2523/br.com.inforsoftcom.securitypassword E/Surface: getSlotFromBufferLocked: unknown buffer: 0x95f0bca0
08-22 20:37:03.603 1189-1189/? W/SurfaceFlinger: couldn't log to binary event log: overflow.
08-22 20:37:03.621 2488-2488/br.com.inforsoftcom.securitypassword W/art: Attempt to remove non-JNI local reference, dumping thread
08-22 20:37:03.622 2488-2488/br.com.inforsoftcom.securitypassword W/AwContents: onDetachedFromWindow called when already detached. Ignoring
08-22 20:37:03.629 2488-2488/br.com.inforsoftcom.securitypassword W/art: Attempt to remove non-JNI local reference, dumping thread
08-22 20:37:03.630 2488-2488/br.com.inforsoftcom.securitypassword W/art: Attempt to remove non-JNI local reference, dumping thread
08-22 20:37:03.659 2488-2488/br.com.inforsoftcom.securitypassword E/Ads: JS: Uncaught ReferenceError: AFMA_ReceiveMessage is not defined (:1)
08-22 20:37:03.659 2488-2488/br.com.inforsoftcom.securitypassword I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: AFMA_ReceiveMessage is not defined", source:  (1)
08-22 20:37:03.741 2488-2488/br.com.inforsoftcom.securitypassword W/BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 2488
08-22 20:37:03.840 2488-2488/br.com.inforsoftcom.securitypassword I/Ads: Scheduling ad refresh 60000 milliseconds from now.
08-22 20:37:03.843 2488-2488/br.com.inforsoftcom.securitypassword I/Ads: Ad finished loading.
08-22 20:37:04.368 2488-2488/br.com.inforsoftcom.securitypassword I/Ads: Ad is not visible. Not refreshing ad.
08-22 20:37:04.368 2488-2488/br.com.inforsoftcom.securitypassword I/Ads: Scheduling ad refresh 60000 milliseconds from now.
08-22 20:37:04.869 2488-2523/br.com.inforsoftcom.securitypassword E/Surface: getSlotFromBufferLocked: unknown buffer: 0x95f09310
08-22 20:37:08.332 2488-2523/br.com.inforsoftcom.securitypassword E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa0b4b040

Faz muito bem de aplicar em seu proprio exemplo! Posta a classe DadosPassword pra gente? E tambem quem está invocado os sets dela.

DadosPassword //Classe DAO

    private ContentValues DadosPassword(Password password) {
        ContentValues dados = new ContentValues();

        dados.put("nomeServidor", password.getNome());
        dados.put("ip", password.getIp());
        dados.put("Login", password.getLogin());
        dados.put("senha", password.getSenha());
        dados.put("loginRoot", password.getLoginRoot());
        dados.put("senhaRoot", password.getSenhaRoot());
        dados.put("urlcaminho", password.getUrl_caminho());

        return dados;
    }

//Classe FormularioHelp preencheFormulario

    public void Preencheformulariopsw(Password password) {
        nomeServidor.setText(password.getNome());
        numeroIP.setText(password.getIp());
        campoLogin.setText(password.getLogin());
        campoSenha.setText(password.getSenha());
        campoSenhaRoot.setText(password.getSenhaRoot());
        campoSenhaRoot.setText(password.getSenhaRoot());
        campoURL.setText(password.getUrl_caminho());

        this.password = password;
    }

Como já tentei por varias vezes ver onde esta errado, fiz o seguinte para verificar se a url esta sendo enviada para FormularioActovity, na intent que recebe os dados da activity anterior adicionei um toast para me informar o que vinha em password.getUrl_caminho(), e ele me retorna o url porem ela não preenche no campo da url.

Intent intent = getIntent();
        Password password = (Password) intent.getSerializableExtra("password");
        if (password != null) {
            pegaDadosFormulario.Preencheformulariopsw(password);
            //Código para verificar se a Url da imagem esta chegando ate aqui
            Toast.makeText(FormularioActivity.this, "" +password.getUrl_caminho(), Toast.LENGTH_LONG).show();
        }

Se você colocar um toast no dados.put("urlcaminho", password.getUrl_caminho()); também está mostrando ok?

Onde você está carregando a password? Poe um toast lá também ou debuga. Realmente deve ser alguma besteira e nenhum de nós estamos enxergando

Esta dando Erro no Toast creio que seja porque a classe retorna apenas os dados, tentei por para retornar o toast também mais não funcionou, fiz o processo do debug mais também não funcionou.

 @NonNull
    private ContentValues DadosPassword(Password password) {
        ContentValues dados = new ContentValues();

        dados.put("nomeServidor", password.getNome());
        dados.put("ip", password.getIp());
        dados.put("Login", password.getLogin());
        dados.put("senha", password.getSenha());
        dados.put("loginRoot", password.getLoginRoot());
        dados.put("senhaRoot", password.getSenhaRoot());
        dados.put("urlcaminho", password.getUrl_caminho());
    //1ª forma que fiz e não funcionou
        Toast.makeText(SecurityDAO.this, password.getUrl_caminho(), Toast.LENGTH_LONG).show();
    //2ª forma que fiz e não funcionou
    //Toast toast =Toast.makeText(SecurityDAO.this, password.getUrl_caminho(), Toast.LENGTH_LONG).show();
    //return dados, toast ;

        return dados;
    }

quando voce diz que nao funcionou,o que acontece? pode por a exception inteira ou o erro de compilação?

Esta e a mensagem apresentada no erro, ele apresenta quando escrevo nem preciso compilar.

cannot resolve method maketext(br.com.inforsoftcom.securitypassword.DAO.SecuritiDAO, Java.lang.String, int);
solução!

O makeText precisa de um Context como primeiro argumento. O seu DAO não é uma Activity, então não implements Context.

Use um simples system out println no lugar.

O debug ou usar biblioteca de loggers seria o mais correto e elegante.

Seguinte achei uma solução e meio gambiarra mais funcionou, eu peguei a url no botão editar apos pegar a position, e envio para próxima Activity via Bundle, olha como eu fiz:

MenuItem editar = menu.add("Editar");
        editar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
                Password psw = (Password) password.getItemAtPosition(info.position);
                Intent intentvaiproformulario = new Intent(HomeActivity.this, FormularioActivity.class);
                //Envirando URL pela intent intentvaiproformulario
                String url_txt = psw.getUrl_caminho();
                Bundle bundle = new Bundle();
                bundle.putString("url_txt", url_txt);
                //Dados que será enviado
                intentvaiproformulario.putExtras(bundle);
                intentvaiproformulario.putExtra("password", psw);
                //Start da intent
                startActivity(intentvaiproformulario);

                return false;
            }
        });