安卓中的消息发送

3

我在Android应用程序中发送消息时,使用了以下代码:

package wishme.code;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Activity2 extends Activity{

    public void onCreate(Bundle savedInstancestate) {
        super.onCreate(savedInstancestate);
        setContentView(R.layout.main2);
        Button previous=(Button) findViewById(R.id.button_prev);
        Button send=(Button) findViewById(R.id.button_send);
        EditText ph_no=(EditText) findViewById(R.id.edit_phone);
        EditText msg=(EditText) findViewById(R.id.edit_msg);

    }
    public void prevclickhandler(View view)
    {
        switch(view.getId())
        {
        case R.id.button_prev:
        Intent intent=new Intent();
        setResult(RESULT_OK,intent);
        finish();
        break;
        case R.id.button_send:
            **String ph_no= ph_no.getText().tostring();** 
    }}
}

但是,被突出显示的行出现了错误,即方法getText在字符串类型中未定义,我该如何解决。


顺便提一下,如果您不打算修改它们,那么您不需要在onCreate中声明那些按钮和EditText变量。当系统读取XML文件(在setContentView期间)时,它会创建并设置它们。findViewById函数只是让您引用已经存在的变量的一种方式。 - eternalmatt
4个回答

4

你的变量在不同的范围内定义。ph_no EditText是在onCreate中定义的,因此在你的单击处理程序中不可用。你实际上调用getText()的是你正在定义的String。

相反,你可以将EditText在Activity内部定义为实例变量,并重命名你的String,以避免变量名冲突。

另一种方法是在需要访问EditText时直接调用findViewById,就像这样:

String ph_no = ((EditText) findViewById(R.id.edit_phone)).getText().toString();

我想要的是在我的处理程序中访问变量EditText ph_no。 - Kamran
如果你发现自己经常写那段代码,你可以创建一个实例变量,然后在所有函数中引用它,而不是每次都要做findViewById。 - brianestey

1

使用不同的名称来表示字符串

  String str_ph_no= ph_no.getText().tostring();

作为本地变量获得优先权,因此它将同时考虑 "ph_no" 作为字符串。

0

我想你需要的是这个:

String ph_no_string = ph_no.getText().toString();

你最初将ph_no定义为EditText,但后来又将其重新定义为字符串。


0

ph_no在我们的活动中不是一个已定义的本地变量,请尝试这样做:

public class Activity2 extends Activity{ 
private EditText ph_no;

public void onCreate(Bundle savedInstancestate) {
    ...
    ph_no=(EditText) findViewById(R.id.edit_phone);
    ...

将您的字符串 ph_no 重命名为其他名称,例如 ph_no_string。


我想要的是在我的ClickHandler中访问ph_no。 我尝试了你所说的事情,但得到了相同的结果。 - Kamran

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