如何设置TextView的文本?

6

我在Android中设置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);                   
            }
        });
    }
}

如果我写下

    final Editable string = input.getText();

然后它就可以工作了.....!!!!

现在我想像这样将EditText的数据发送到下一个Activity

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);
            }
        });
    }
}

Second.java类中,我以以下方式获取StringExtra

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`
    }
}

请给我一种开发的方法。
6个回答

5
问题应该是您发送的是 Editable,而不是 String。请尝试以下更改:
final String string = input.getText().toString();

3

我认为问题在于你实际上将一个“可编辑”放入了意图中,而不是一个字符串。虽然很接近,但它们并不是同一件事。如果你将可编辑对象toString()成字符串对象,并将其放入意图中,那么你应该能够像你现在所做的那样使用getString()方法取回它。


2
     private TextView mTextView;
     private String mString;

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

1

尝试类似这样的东西:

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);
            }
        });
    }
}

(提示:最简单的发布代码的方法是将代码粘贴,选择它,然后使用crtl+k进行缩进/格式化。)

0

在这一行中使用

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

而不是

final String string = input.getText();

0
根据 Android 文档,放入 extras 中的字符串名称必须包含包前缀,例如 som.arshay.dev.thetext。 其次,getExtras() 返回一个 bundle,而不是你添加的内容。你需要使用 getStringExtra(name)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接