2012-06-14 189 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