Error sending an int parameter through an attempt

1

Personal I'm making an app that gets a user code and it's in hexadecimal. I convert it to decimal and insert a shared preference. So far so good.

At the time it will send the parameter to the other activity gives error:

  

03-18 17: 59: 47,071: E / AndroidRuntime (1983): FATAL EXCEPTION: main   03-18 17: 59: 47.071: E / AndroidRuntime (1983): java.lang.RuntimeException: Unable to start activity ComponentInfo {com.example.testener / com.example.testager.Telager): android.content.res.Resources $ NotFoundException: String resource ID # 0xa   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2180)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2230)   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at android.app.ActivityThread.access $ 600 (ActivityThread.java:141)   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1234)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at android.os.Handler.dispatchMessage (Handler.java:99)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at android.os.Looper.loop (Looper.java:137)   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at android.app.ActivityThread.main (ActivityThread.java:5039)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at java.lang.reflect.Method.invokeNative (Native Method)   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at java.lang.reflect.Method.invoke (Method.java:511)   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:793)   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at dalvik.system.NativeStart.main (Native Method)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): Caused by: android.content.res.Resources $ NotFoundException: String resource ID # 0xa   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at android.content.res.Resources.getText (Resources.java:230)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at android.widget.Toast.makeText (Toast.java:265)   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at com.example.testger.Telager.onCreate (Telagerador.java:28)   03-18 17: 59: 47,071: E / AndroidRuntime (1983): at android.app.Activity.performCreate (Activity.java:5104)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1080)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2144)   03-18 17: 59: 47.071: E / AndroidRuntime (1983): ... 11 more

And quit the application.

The part of the code that gives error is this, because when I leave this as a comment the app runs normally:

@Override
public void onResume () { //Verifica se o usuário é licenciado ou não
 super.onResume(); 

    //teste para ver se o sharedpreference codfinal nao esta nulo mas esta vazio ("")
    int teste = cod_final.getInt("codfinal",0);

    //verificacao de primeiro launcher
    //  if (sPreferences.getBoolean("firstRun", true)) {

    //verificacao se o usuario digitou o codigo final se ele estiver null suponhamos que ele ainda nao validou a licenca pois nao digitou o codigo fornecido na ligacao
    if(cod_final==null || teste==0){


     //mensagem de não licenciado           
      final ProgressDialog ringProgressDialog = ProgressDialog.show(MainActivity.this, "Você não está licenciado!", "Processando sua licença ...", true);
      ringProgressDialog.setCancelable(true);
      new Thread(new Runnable() {   
       @Override
       public void run() {
        try {
         Thread.sleep(10000);
        } catch (Exception e) {
          }
        ringProgressDialog.dismiss();
        }           
       }).start();


      //captura o IMEI do dispositivo           
      TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
      String IMEI = telephonyManager.getDeviceId().toString();
      licenca.setText(IMEI);


       //marca como false o sharedpreference: quer dizer que usuario esta licenciado
      //sPreferences.edit().putBoolean("firstRun", false).apply();

       Toast.makeText(getApplicationContext(), "codigo final NULO", Toast.LENGTH_LONG).show();

    } /*Fim if(cod_final==null || teste==""){*/

    else{/*se houver codigo final quer dizer que o usuario esta licenciado
           entao abre a tela para gerar os codigos enviando o parametro que é o numero do cod_final
           que aparecera para o usuario como licencas restantes*/                    
                Toast.makeText(getApplicationContext(), "codigo final NAO nulo", Toast.LENGTH_LONG).show();

                //pega o conteudo da sharedpreference e converte para string
               int licencas_resto = cod_final.getInt("codfinal",0);


               //aqui mostra o que realmente está no sharedpreference que no caso é um valor int , 
               //que é o valor hex digitado pelo usuario convertido em decimal. 
               //Isso está numa outra parte do código, não coloquei aqui porque está funcionando normalmente. 
               Log.i("CODIGO FINAL", "o que esta inserido em cod final" + licencas_resto); 

               //abre tela de geração de códigos
                Intent X = new Intent("tela_geralicencas");//chama a tela de geracao de codigo
                X.addCategory("gerar");
                Bundle params = new Bundle();
                params.putInt("mensagem",licencas_resto);
                //params.putString("mensagem", licencas_resto);
                X.putExtras(params);
                startActivity(X);
            }/*Fim else*/
  }/*Fim   public void onResume () {*/'

Another Activity Code:

package com.example.testegerador;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class Telagerador extends Activity {

  TextView tvResto;

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

      tvResto=(TextView)findViewById(R.id.textView5);

      //Recebe o parametro da outra tela que no caso e o numero do cod final
      Intent intent = getIntent();
      Bundle params = intent.getExtras();   
      if(params!=null)
      {   
       //converte o valor recebido pelo parametro em string   
        int mostraTexto = params.getInt("mensagem");

        Toast.makeText(getApplicationContext(), mostraTexto, Toast.LENGTH_LONG).show();

       //insere no textView o valor de licenças restantes
        tvResto.setText(mostraTexto);
      }/*Fim if(params!=null)*/

  }/*Fim OnCreate*/

}/*Fim  public class Telagerador extends Activity {*/

Can anyone help me? The guys are right I do not know what happens.

Just remembering I'm a beginner in this area. Right away, thank you!

    
asked by anonymous 18.03.2015 / 19:37

1 answer

0

I think you're making a mistake when you try to pass the values. Check the code below.

Send license code

    startActivity(new Intent(getApplicationContext(), Telagerador.class) // Acredito que Telagerador seja a tela que você deseja receber valores...
            .putExtra("licencas", licencas_resto);

Receive license code

    int mostrarTexto = getIntent().getIntExtra("licencas", -1);
    tvResto.setText(String.valueOf(mostrarTexto));

See if it works. I analyzed your code, and the only thing that I I saw incorrect was the way you called Activity , because I did not find any class with the name tela_geralicencas .

But if this does not solve your problem, leave a comment that will redo the answer in order to give you a solution .

>     
19.03.2015 / 04:30