2012-05-01 17 views
6

Estoy frente a un problema de fijar el texto a TextView en androide mi código es:¿Cómo configurar el texto de TextView?

public class Main extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button button = (Button) findViewById(R.id.button1); 
     final TextView text = (TextView) findViewById(R.id.textView1); 
     final EditText input = (EditText) findViewById(R.id.editText1); 
     final String string = input.getText(); 
     button.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       text.setText(string);     
      } 
     }); 
    } 
} 

si escribo

final Editable string = input.getText(); 

entonces funciona ..... !!!!

Ahora quiero enviar datos de EditText al lado Activity así:

public class Main extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button button = (Button) findViewById(R.id.button1); 
     final TextView text = (TextView) findViewById(R.id.textView1); 
     final EditText input = (EditText) findViewById(R.id.editText1); 
     final Editable string = input.getText(); 
     button.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       Intent intent = new Intent(Main.this, Second.class); 
       intent.putExtra("thetext", string); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

y en Second.java clase I consiguen StringExtra de esta manera:

public class Second extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second); 

     TextView text = (TextView) findViewById(R.id.textView2); 
     String string = getIntent().getExtras().getString("thetext", "not found"); 
     text.setText(string); /// Here the text is not shown but the default message "not found" is set to `TextView` 
    } 
} 

Por favor, dame manera de proceder en desarrollo.

Respuesta

3

Creo que el problema es que realmente está poniendo un "Editable" en el intento, no una Cadena. Aunque cerca, no son lo mismo. Si toString() es Editable para obtener un objeto String y ponerlo en la intención, debería poder recuperarlo con getString como lo hace.

+0

gracias Brayden que era el problema que más me vino ... –

5

El problema debería ser, está enviando Editable, no String. Prueba esto:

final String string = input.getText().toString(); 
1

intentar algo como esto:

public class Main extends Activity { 
    EditText input; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TextView text = (TextView) findViewById(R.id.textView1); 
     input = (EditText) findViewById(R.id.editText1); 

     Button button = (Button) findViewById(R.id.button1); 
     button.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(Main.this, Second.class); 
       intent.putExtra("thetext", input.getText().toString()); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

(Sugerencia: La forma más fácil de publicar código es para pegar su código, seleccionarlo y utilice Ctrl + K para sangrar/formato que .)

0

De acuerdo con los documentos de android, el nombre de la cadena puesta en extras debe incluir un prefijo de paquete ... es decir, som.arshay.dev.thetext En segundo lugar, getExtras() devuelve un paquete, que no es lo tu agregaste. Es necesario getStringExtra(name)

0

En esta línea uso

final String string = input.getText().toString(); 

en lugar de

final String string = input.getText(); 
2
 private TextView mTextView; 
    private String mString; 

mTextView = (TextView) findViewById(R.id.tv); 
mString = "hello everyone ! how r u?"; 
mTextView.setText(mString); 
Cuestiones relacionadas