2012-06-14 156 views
3

在我的android应用程序中发送消息我已经使用了下面的代码。在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是未定义string类型 我怎样才能解决这个方法。

+0

在一个侧面说明,你并不需要声明的如果你不打算修改它们,可以在'onCreate'中使用Button和EditText变量。系统在读取XML文件时(在'setContentView'期间)为您创建并设置它们。 'findViewById'函数只是引用已经存在的变量的一种方式。 – eternalmatt

回答

4

您的变量在不同的作用域中定义。 ph_no EditText在onCreate中定义,并且在您的点击处理程序中不可用。实际上调用getText()的ph_no是您正在定义的字符串。

相反,您可以在您的Activity中将EditText定义为实例变量,并重命名您的字符串以使变量名不会相互冲突。

另一种方法是只是调用findViewById当你需要访问的EditText,像这样:

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

我想要的是访问变量EditText ph_no insidd我的处理程序 – Kamran

+0

感谢解决方案为我工作。 – Kamran

+0

如果你发现自己编写了很多代码,你可以创建一个可以从所有函数中引用的实例变量,而不必每次都执行findViewById。 – brianestey

1

使用diffent名字符串

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

的局部变量得到优先所以将同时考虑“ph_no”作为字符串

0

你想这是什么,我认为:

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

您首先将ph_no定义为EditText,但稍后将ph_no重新定义为字符串。

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

+0

我想要的是访问我的点击处理程序中的ph_no。 我试过你说的话,但得到的结果相同。 – Kamran