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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

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

Android

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Q&A

解決済

1回答

357閲覧

Asynctask Stringデータの受け渡し

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

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

Android

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

0グッド

0クリップ

投稿2017/09/25 11:54

Stringデータの受け渡し

下記のソースコードでStringのデータの受け渡しをして、データがなければダイアログ表示あればActivityの移動を行うとしているのですが
jsonデータがしっかりと返ってきているのに、なぜか
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
エラーが出てしまいます。
どうすればしっかりとデータの受け渡しができますか。
(classの名称などはここで変えているので、曖昧な部分がある可能性があります)

Java

1public class MainActivity extands Activity { 2 String text; 3 /* 4 省略 5 */ 6 button = (Button) findViewById(R.id.click); 7 button.setOnClickListener(new View.OnClickListener() { 8 @Override 9 public void onClick(View v) { 10 startAsync(); 11 if(text.length() == 0) { 12 AlertDialog.Builder alertDlg = new AlertDialog.Builder(LoginActivity.this); 13 alertDlg.setTitle("テスト"); 14 alertDlg.setMessage("テスト"); 15 alertDlg.setPositiveButton( 16 "OK",null); 17 alertDlg.create().show(); 18 }else if(text.length() != 0) { 19 saveString(LoginActivity.this,AT,logintext); 20 Intent intent = new Intent(MainActivity.this, NextActivity.class); 21 startActivity(intent); 22 } 23 } 24 }); 25 26 private void startAsync(){ 27 final String str; 28 str = text; 29 30 Asynctask1 starttask = new Asynctask1(str); 31 starttask.execute(); 32 } 33}

Java

1public class Asynctask extends AsyncTask<String,String,String> { 2 3 String text2 = ""; 4 5 6 public Asynctask1(String text) { 7 text2 = text; 8 } 9 10 11 @Override 12 protected String doInBackground(String...value) { 13 14 /* 15 POSTリクエスト(省略) 16 */ 17 18 try { 19 20 switch (status) { 21 case HttpURLConnection.HTTP_OK: 22 InputStream is = urlCon.getInputStream(); 23 BufferedReader in = new BufferedReader(new InputStreamReader(is)); 24 25 StringBuilder be = new StringBuilder(); 26 StringBuilder result = new StringBuilder(); 27 28 String line; 29 30 while ((line = be.readLine()) != null) { 31 sb.append(line); 32 } 33 34 JSONObject jsonObject2 = new JSONObject(be.toString()); 35 result.append(jsonObject2.get("gettext")); 36 37 retun result.toString(); 38 39 case HttpURLConnection.HTTP_UNAUTHORIZED: 40 break; 41 default: 42 break; 43 } 44 } catch (Exception e) { 45 e.printStackTrace(); 46 } finally { 47 try { 48 if (reader != null) { 49 reader.close(); 50 } 51 if (os != null) { 52 os.close(); 53 } 54 } catch (IOException e) { 55 e.printStackTrace(); 56 } 57 } 58 return null; 59 } 60 61 @Override 62 protected void onPostExecute(String result) { 63 text2 = result; 64 } 65}

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

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

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

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

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

guest

回答1

0

ベストアンサー

String textに値を入れる処理が見当たりません。
textがnullのままメソッドにアクセスしていることが原因だと考えられます。
コールバックを実装し、AsyncTaskの結果をActivityにコールバックしましょう。
また、エラーログを貼るなら省略しないようにしましょう。

投稿2017/09/25 13:44

編集2017/09/25 13:55
yona

総合スコア18155

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

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

退会済みユーザー

退会済みユーザー

2017/09/27 09:07

ご回答いただきありがとうございます。 解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問