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 is undefined for the type string であるというエラーを返します。これを解決するにはどうすればよいですか。

4

4 に答える 4

4

変数はさまざまなスコープで定義されています。ph_no EditText は onCreate で定義されており、クリック ハンドラーでは使用できません。実際に getText() を呼び出している ph_no は、定義している文字列です。

代わりに、アクティビティ内の EditText をインスタンス変数として定義し、文字列の名前を変更して、変数名が衝突しないようにすることができます。

別のアプローチは、次のように、EditText へのアクセスが必要なときに findViewById を呼び出すことです。

String ph_no = ((EditText) findViewById(R.id.edit_phone)).getText().toString();
于 2012-06-14T12:16:29.800 に答える
1

文字列に別の名前を使用する

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

ローカル変数として優先されるため、両方の「ph_no」を文字列と見なします

于 2012-06-14T12:16:35.510 に答える
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 のような別の名前に変更します

于 2012-06-14T12:19:14.607 に答える
0

あなたが欲しいのはこれだと思います:

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

最初に ph_no を EditText として定義しますが、後で ph_no を文字列に再定義します。

于 2012-06-14T12:17:48.093 に答える