Solucionado (ver solução)
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;
            }
        });