質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1209閲覧

returnの場所は、一番下ですが、AlartDialogを作る関係上、clicklistenerが作動する前の値でreturnされてしまいます。

edoooooo

総合スコア476

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2017/06/09 21:06

編集2017/06/09 23:16

//このreturnの値であるnullを、下の、Log出力時のように、etoと表示されるようにしたいです。どこでreturnをすれば、etoをusernameに代入しreturnできるのでしょうか?

java

1 206-10 05:50:02.567 17954-17954/com.example.android.sample.new3 I/System.out: return username;:null 3 406-10 05:50:07.603 17954-17954/com.example.android.sample.new3 I/System.out: select username from user where username = 'eto' and password = 'eto'; 506-10 05:50:07.624 17954-17954/com.example.android.sample.new3 I/System.out: checkusername:eto 606-10 05:50:07.624 17954-17954/com.example.android.sample.new3 I/System.out: username:eto 706-10 05:50:07.624 17954-17954/com.example.android.sample.new3 I/System.out: ログイン完了eto 8

java

1 public String newSet(LayoutInflater inflaters, final Context contexts,View layouts,InputMethodManager inputMethodManagers) { 2 3 4 builder = new AlertDialog.Builder(context); 5 builder.setView(layout); 6 builder.setNegativeButton("ログイン", new DialogInterface.OnClickListener() { 7 public void onClick(DialogInterface dialog, int which) { 8 EditText getusername2 = (EditText) layout.findViewById(R.id.username); 9 String getusername = getusername2.getText().toString(); 10 11 //データベースから取得してあればログイン 12 String sql = "select username from user where username = '" + getusername + "';"; 13 System.out.println(sql);/////////////////////ログ出力 14 MyOpenHelper helper = new MyOpenHelper(context); 15 SQLiteDatabase db = helper.getWritableDatabase(); 16 Cursor c = db.rawQuery(sql, null); 17 Integer count = c.getCount(); 18 if (count != 0) { 19 c.moveToFirst(); 20 String checkusername = c.getString(0); 21 Toast toast = Toast.makeText(context, "ログインしました", Toast.LENGTH_SHORT); 22 toast.show(); 23 System.out.println("checkusername:"+checkusername);/////////////////////ログ出力 24 username = checkusername; 25 System.out.println("username:"+username);/////////////////////ログ出力 26 System.out.println("ログイン完了" + username);/////////////////////ログ出力 27 } 28 29 }); 30 alertDialog = builder.create(); 31 alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 32 33 @Override 34 public void onShow(DialogInterface arg0) { 35 getusername2 = (EditText) layout.findViewById(R.id.username); 36 //inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 37 inputMethodManager.showSoftInput(getusername2, 0); 38 } 39 40 }); 41 alertDialog.show(); 42 43 System.out.println("return usernmae;:"+username);/////////////////////ログ出力 44 return username; 45 46 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

usernameはDBを開いて読み込んで初めて確定しますよね?つまりsetNegativeButtonに渡したonClickメソッドが実行されるまでは確定しません。

つまりSystem.out.println("return usernmae;:"+username);より先にたまたま偶然setNegativeButtonに渡したonClickメソッドのusername = checkusername;が実行されない限りnullにしかなりません。
つまり言い換えるとその時点のlogはあまり意味がありません(nullであることを確認する意味合いしかない)

投稿2017/06/10 16:15

yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2017/06/11 17:46

nullであることをわかりやすく伝えるために、ログを載せました。 質問の意図は、どうすれば、このコードを改善できますか? でした。
yumetodo

2017/06/12 03:49

単純にSystem.out.println("return usernmae;:"+username);を取り除けばいいのでは?
edoooooo

2017/06/12 09:23

ありがとうございます。これで直接的な原因は解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問