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

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

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

mBaaSとはモバイルアプリケーションでの利用に特化したBaaSです。スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供しています。

Java

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1364閲覧

mBaaS テキストファイルの読み込みについて

sunnytj

総合スコア16

mBaaS

mBaaSとはモバイルアプリケーションでの利用に特化したBaaSです。スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供しています。

Java

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/10/16 08:10

Androidアプリを開発しています。今まではローカルなフォルダにテキストファイルを入れてそこからInputStream,BufferedReaderで読み込みしており、今後はmBaaSにファイルをアップロードしてそこからデータを持って来たいと考えています、そこで、以下のようなコードを書いたのですが取得した文字列をtextView等で表示しようとしても何も表示されない状況です。コメントアウトしている
System.out.println(new String(data));
で確認すると、こちらでは表示されるのでmBaaSからデータ自体は読み込めているようです。
また、String str = new String(data)のようにして文字列に入れて、それをTextViewにsetText(str)しても表示されない状態です。
解決方法をご存知の方がいましたらお願い致します。

Java

1InputStream is = null; 2BufferedReader br = null; 3String title, description; 4try { 5 NCMBFile file = new NCMBFile("test.txt"); 6 file.fetchInBackground(new FetchFileCallback() { 7 @Override 8 public void done(byte[] data, NCMBException e) { 9 if (e != null) { 10 //失敗 11 e.printStackTrace(); 12 } else { 13 //成功 14 //System.out.println(new String(data)); 15 is = new ByteArrayInputStream(data); 16 } 17 } 18 }); 19 20 br = new BufferedReader(new InputStreamReader(is)); 21 title = br.readLine(); 22 description = br.readLine(); 23 } finally { 24 if (is != null) is.close(); 25 if (br != null) br.close(); 26 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

処理順について勘違いをしているようです。
NCMBFileはdoneメソッドが呼ばれない限りファイルは取得されていないと考えられます。
そのため、NCMBFile#fetchInBackgroundの直後に書いてある処理はisが空のまま実行されることになるのでsetTextをしても何も表示されないことになります。
System.out.printlnの処理をNCMBFile#fetchInBackgroundに変更して確認してください。

また、setText等の表示を更新する処理はdoneメソッドの中に書くといいでしょう。

投稿2017/10/16 09:04

yona

総合スコア18155

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

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

sunnytj

2017/10/16 09:29

処理順を勘違いしていました。ありがとうございます また、doneメソッドでdoneの外部のforループのint iを使用したいのですがdone内で外部の変数にアクセス及び変更することなどは可能なのでしょうか…
yona

2017/10/16 09:45

int iをfinal intの変数に入れ直せばできると思いますよ。 ただ、本来の質問とは関係無い質問は別の質問として投稿しましょうね。
sunnytj

2017/10/16 12:23

お陰様で解決できました、別カテゴリの質問失礼いたしました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問