1

私の作業の変更されたサンプルは基本的に以下にあります。2 つの編集ボックスがあります。両方の値をアラート ボックスに表示します。残りのコードは正常に動作し、アラート ボックスは表示されますが、入力された値は表示されません。

public class Main extends Activity {

    EditText username = null;
    EditText password = null;
    Button login;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        EditText usern = (EditText) findViewById(R.id.username);
        EditText pass = (EditText) findViewById(R.id.password);
        Button login = (Button) findViewById(R.id.login);
        String usernm = usern.getText().toString();
        String passnm = pass.getText().toString();
        final Builder alert = new AlertDialog.Builder(this)
            .setTitle("SHOW FIELDS")
            .setMessage("USERNAME:" + usernm + "  PASSWORD:" + passnm)
            .setNegativeButton("CLOSE", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) { 
                    // do nothing
                    closeContextMenu();
                }
             });
         login.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 alert.show();
             }
         });
4

1 に答える 1

1

ボタンで EditText の値を取得する必要があるため、AlertDialog に次のように表示します。

login.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
          usernm = usern.getText().toString();
          passnm = pass.getText().toString();
             alert.show();
         }

usernmと の両方をpassnmクラス レベルで宣言する

編集: または、アラートを表示するメソッドを作成し、ボタンのクリック時に次のように呼び出す最善の方法:

  public void showalert(){
          usernm = usern.getText().toString();
          passnm = pass.getText().toString();
          alert = new AlertDialog.Builder(Main.this)
            .setTitle("SHOW FIELDS")
            .setMessage("USERNAME:" + usernm + "  PASSWORD:" + passnm)
            .setNegativeButton("CLOSE", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) { 
                    // do nothing
                    closeContextMenu();
                }
             });
     alert.show();
    }

ボタンのクリック時にこのメソッドを次のように呼び出します。

 login.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        showalert();
     }:
 });

クラスレベルですべての変数を宣言すると、クラス全体で次のようにアクセスできます。

public class Main extends Activity {
EditText usern ;
EditText pass ;
Button login;

String usernm ,passnm; //<<< Declare here
Builder alert;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
     usern = (EditText) findViewById(R.id.username);
     pass = (EditText) findViewById(R.id.password);
     login = (Button) findViewById(R.id.login);

         login.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
              showalert();
         }
     });
 }
于 2012-12-17T15:16:27.207 に答える