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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Java

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

Android

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

Q&A

0回答

1906閲覧

Firebaseのリアルタイムデータベースを、javaで使いたいです。onDataChange(DataSnapshot dataSnapshot)が呼ばれないです

edoooooo

総合スコア476

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Java

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

Android

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

0グッド

0クリップ

投稿2017/07/10 04:01

編集2017/07/10 04:19

java

1final FirebaseDatabase database = FirebaseDatabase.getInstance(); 2 3//この下の行の("chatapplication-879e5/database/data")というのは、この画像のとおりに入力したのですが、間違えているのでしょうか? 4 DatabaseReference ref = database.getReference("chatapplication-879e5/database/data"); 5 DatabaseReference usersRef = ref.child("users"); 6 7 Map<String, Users> users = new HashMap<String, Users>(); 8 users.put("alanisawesome", new Users("June 23, 1912", "Alan Turing")); 9 users.put("gracehop", new Users("December 9, 1906", "Grace Hopper")); 10 usersRef.setValue(users); 11 12 //commit完了コールバック 13 DatabaseReference dataRef = ref.child("data"); 14 dataRef.setValue("I'm writing data", new DatabaseReference.CompletionListener() { 15 @Override 16 public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 17 if (databaseError != null) { 18 System.out.println("Data could not be saved " + databaseError.getMessage()); 19 } else { 20 System.out.println("Data saved successfully."); 21 } 22 } 23 }); 24 25 //Post つまり、Push 26 DatabaseReference postsRef = ref.child("posts"); 27 DatabaseReference newPostRef = postsRef.push(); 28 newPostRef.setValue(new Post("gracehop", "Announcing COBOL, a New Programming Language")); 29 30 //データ取得に使うKeyの取得 31 DatabaseReference pushedPostRef = postsRef.push(); 32 String postId = pushedPostRef.getKey(); 33 34 DatabaseReference mPostReference = FirebaseDatabase.getInstance().getReference() 35 .child("posts").child(postId); 36 37 ValueEventListener postListener = new ValueEventListener() { 38 @Override 39 public void onDataChange(DataSnapshot dataSnapshot) { 40 Post post = dataSnapshot.getValue(Post.class); 41 Toast toast2 = Toast.makeText(LocationActivity.this, post.author, Toast.LENGTH_SHORT); 42 toast2.show(); 43 } 44 45 @Override 46 public void onCancelled(DatabaseError databaseError) { 47 } 48 }; 49 mPostReference.addValueEventListener(postListener); 50 51

このように、書いて、Toastを表示させたいのですが、onDataChange( の中にはいれません。
何が原因なのでしょうか?

イメージ説明

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

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

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

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

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

jm1156

2017/07/10 04:21

「Firebaseのリアルタイムデータベースを、javaで使いたいです。」のか、 「Toastを表示させたい」のか、 「onDataChangeの中に入れない」で困っているのか? どれでしょう? 「Toastを表示させたい」のに表示されないのであれば、Toastは基本、別スレッドから表示できないので、その辺りかもしれません。 もしスレッドが別の場合なら別スレッドで表示する方法を調べてみてください。
edoooooo

2017/07/10 04:25

Firebaseのデータベースをjavaで使いたく、onDataChangeの中にはいれずToastが表示されないです。
jm1156

2017/07/10 04:48

「どれで困っているのか?」って質問だったのですが…。 まぁonDataChangeに入れないってことでしょうかね? onDataChangeはデータ取得時に呼び出されるのですが、 呼び出し側は正しく行われていますか? エラーの場合はonCancelled()が呼ばれるのですが、そちらは呼ばれていますか? Toast が表示されないのであれば、スレッド外でToast が表示されるかどうかなども調べてみてください。
edoooooo

2017/07/10 05:39

onCancelled()が呼ばれていました。public void onCancelled(DatabaseError databaseError) { Toast toast3 = Toast.makeText(LocationActivity.this, "post.author", Toast.LENGTH_SHORT); toast3.show();}にしたところToastが表示されました。
edoooooo

2017/07/10 05:51

DatabaseReference ref = database.getReference("chatapplication-879e5/database/data"); ここが間違えていると考えます。どうすればいいでしょうか?
edoooooo

2017/07/10 05:57

どこの値をここに使えばいいのでしょうか?
jm1156

2017/07/10 05:59

chatapplication-879e5/database/dataは存在するのですか?画像をみるとnullになっていますが? onCancelledが呼ばれたのであれば、databaseErrorが設定されていると思うのですが、それを調べてみてください。
edoooooo

2017/07/10 06:27

nullです。調べてみます。
edoooooo

2017/07/10 06:30

nullとなっているものは、 「chatapplication-879e5」 です。 /database などは、付いてないです
edoooooo

2017/07/10 07:00

それと、databaseErrorは、Log.wでLog出力するだけでした。
edoooooo

2017/07/10 07:02

ありがとうございます
edoooooo

2017/07/10 08:14 編集

androidだからか、同じ画面が表示されなく、同じ作業ができない状況です。
jm1156

2017/07/10 10:25

Androidでなくても、同じ画面でなくても関係ないと思います。データベースがないので、作成すればいいだけです。 というかFirebaseとかデータベースとかのまえにプログラミングの基礎的なところからやったほうがよいかと思います。
edoooooo

2017/07/11 04:00

sqlは使ってたんですが、create table してないということでしょうか?
edoooooo

2017/07/11 04:47

認証されてないから、コメントできてない可能性もあります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問