Android - TextView不更改文本

时间:2013-10-20 14:08:18

标签: android textview

我目前正在学习一些学校项目的android,我无法弄清楚如何动态地将文本设置为TextView。

以下是完整的活动:

package com.avilyne.android.gcmclient;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.content.DialogInterface;

public class EnviarMensaje extends Activity {
    ListView l; 
    EditText t;
    TextView err;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_enviar_mensaje);

        l = (ListView)findViewById(R.id.listaVista);    
        t = (EditText)findViewById(R.id.editText1);
        err = (TextView)findViewById(R.id.textoss);
        err.setText("Escriba su mensaje y luego seleccione el canal.");
        l.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                String m= t.getText().toString();
                if(m.equals("")){
                    err.setText("Escriba su mensaje y luego seleccione el canal.");
                    return;
                }
                else{
                    showAlert();
                    (new Funciones()).EnviarMensaje(l.getItemAtPosition(arg2).toString(), m);
                    //mostrar mensaje Su mensaje ha sido enviado
                    Intent activityChangeIntent = new Intent(EnviarMensaje.this, FirstActivity.class);
                    EnviarMensaje.this.startActivity(activityChangeIntent);
                }
            }
        });


        ListView lv;
        setContentView(R.layout.activity_enviar_mensaje);
        lv = (ListView)findViewById(R.id.listaVista);

        ArrayList<String> your_array_list = (new Funciones()).listarCanales();

        // This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, your_array_list);
        lv.setAdapter(arrayAdapter); 

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.enviar_mensaje, menu);
        return true;
    }

    private void showAlert(){
        AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("Confirmación.");
        alertDialog.setMessage("Su mensaje ha sido enviado correctamente.");
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int which) {
              // TODO Add your code for the button here.
           }
        });
        // Set the Icon for the Dialog
        alertDialog.setIcon(R.drawable.ic_launcher);
        alertDialog.show();


    }

}

以下是我的activity_enviar_mensaje:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".EnviarMensaje" >

    <TextView
        android:id="@+id/instrucciones"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/instrucciones"
        android:layout_alignRight="@+id/instrucciones"
        android:layout_below="@+id/instrucciones"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/textoss"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/listaVista"
        android:layout_alignParentBottom="true"
        android:text="TextView" />

    <ListView
        android:id="@+id/listaVista"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textoss"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1" >
    </ListView>



</RelativeLayout>

任何帮助都将非常感谢...感谢您的时间,José。

2 个答案:

答案 0 :(得分:4)

        ListView lv;
        setContentView(R.layout.activity_enviar_mensaje);
        lv = (ListView)findViewById(R.id.listaVista);

您已将内容设置为活动 TWICE ,这就是为什么您的文字没有更改,因为活动再次设置原始布局。从底部删除上面的三行,它将正常工作。

在删除上述三行之后,将适配器设置为l.setAdapter(arrayAdapter);

以下是您更新的onCreate()方法

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

        l = (ListView)findViewById(R.id.listaVista);    
        t = (EditText)findViewById(R.id.editText1);
        err = (TextView)findViewById(R.id.textoss);
        err.setText("Escriba su mensaje y luego seleccione el canal.");
        l.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                String m= t.getText().toString();
                if(m.equals("")){
                    err.setText("Escriba su mensaje y luego seleccione el canal.");
                    return;
                }
                else{
                    showAlert();
                    (new Funciones()).EnviarMensaje(l.getItemAtPosition(arg2).toString(), m);
                    //mostrar mensaje Su mensaje ha sido enviado
                    Intent activityChangeIntent = new Intent(EnviarMensaje.this, FirstActivity.class);
                    EnviarMensaje.this.startActivity(activityChangeIntent);
                }
            }
        });



        ArrayList<String> your_array_list = (new Funciones()).listarCanales();

        // This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, your_array_list);
        l.setAdapter(arrayAdapter); 

    }

答案 1 :(得分:0)

xml文件没有R.id.texto 在布局xml文件中将@+id/textoss更改为@+id/texto