6

我面临TextView在 android 中设置文本的问题,我的代码是:

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

请给我继续开发的方法。

4

6 回答 6

5

问题应该是,您发送的是Editable,而不是String。试试这个:

final String string = input.getText().toString();
于 2012-05-01T14:39:45.640 回答
3

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

于 2012-05-01T14:39:29.093 回答
2
     private TextView mTextView;
     private String mString;

mTextView = (TextView) findViewById(R.id.tv);
mString = "hello everyone ! how r u?";
mTextView.setText(mString);
于 2013-04-23T05:09:03.367 回答
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 缩进/格式化它。)

于 2012-05-01T14:41:10.550 回答
0

根据 android 文档,放入 extras 的字符串的名称必须包含一个包前缀...即 som.arshay.dev.thetext 其次,getExtras() 返回一个包,这不是您添加的。你需要 getStringExtra( name )

于 2012-05-01T14:43:32.507 回答
0

在这一行使用

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

代替

final String string = input.getText();
于 2012-05-01T14:47:00.533 回答