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

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

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

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

Android

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

解決済

1回答

1379閲覧

Twitter4jを用いてアップロードした画像のmediaIDを取得するmethodを作りたい

VividRabbit_

総合スコア7

Java

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

Android

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

0クリップ

投稿2017/11/11 09:10

編集2017/11/11 15:14

###前提・実現したいこと
Twitter4jを用いてアップロードした画像のmediaIDを取得するmethodを作りたい

###発生している問題・エラーメッセージ
どのタイミングでmediaIDをreturnすればいいかわからない

###該当のソースコード

java

1public long twitterUploadImage(final Twitter mTwitter, final String filepath, final Context context){ 2 AsyncTask<String, Void, Boolean> task = new AsyncTask<String, Void, Boolean>(){ 3 4 @Override 5 protected Boolean doInBackground(String... strings) { 6 try { 7 //ここで画像をアップロード 8 media = mTwitter.uploadMedia(new File(filepath)); 9 mediaID = media.getMediaId(); 10 return true; 11 } catch (TwitterException e) { 12 e.printStackTrace(); 13 return false; 14 } 15 } 16 17 //アップロードの可否をToast 18 @Override 19 protected void onPostExecute(Boolean tweetResult){ 20 if(tweetResult){ 21 showToast(context,"画像をアップロードしました"); 22 }else{ 23 showToast(context,"画像をアップロードできませんでした"); 24 } 25 } 26 }; 27 task.execute(filepath); 28 return mediaID; 29 }

と書いたのですが、これだと画像がアップロードされる前にmediaIDがreturnされてしまい、デフォルト値の0しか返ってきません。

###補足情報(言語/FW/ツール等のバージョンなど)
Android Studio3.0、Twitter4j-4.0.6を使用しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

タイミングは

mediaID = media.getMediaId();

以降ですが、おそらく値の返し方で悩まれているのかと思います。

リスナーなどについて調べる事をお勧めします。

interfaceを使った独自リスナーの作り方
http://android-note.open-memo.net/sub/event__my_listener.html


コード例: 書き方は色々あると思います。ビルドを通してないので、typo等あるかもしれません。

[呼び出し側]

final MyListener listener = new MyListener() { @Override public void onMediaIdChanged(final long mediaID) { // mediaIDを使う処理 } } twitterUploadImage(mTwitter, filepath, context, listener); // まとめて twitterUploadImage(mTwitter, filepath, context, new MyListener() { ... }); と書くのも可

[リスナ(名前は適当)]

interface MyListener { void onMediaIdChanged(final long mediaID) }

[呼ばれる側(改造版、抜粋)]

// 戻り値の型 long を void に変更、引数 listener を追加 public void twitterUploadImage(final Twitter mTwitter, final String filepath, final Context context, final MyListener listener) { AsyncTask<String, Void, Boolean> task = new AsyncTask<String, Void, Boolean>(){ @Override protected Boolean doInBackground(String... strings) { try { //ここで画像をアップロード media = mTwitter.uploadMedia(new File(filepath)); mediaID = media.getMediaId(); if (listener != null) { listener.onMediaIdChanged(mediaID); // ここで返す } return true; } catch (TwitterException e) { e.printStackTrace(); return false; } } // (省略) // return mediaID; // ここではmediaIDを返さない }

投稿2017/11/12 03:55

編集2017/11/12 11:28
toris-birds

総合スコア122

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

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

VividRabbit_

2017/11/12 10:27

上記のサイトを見ましたが、よくわからなかったのでもう少し具体的な回答をいただけるとありがたいです。
toris-birds

2017/11/12 11:29

補足用に、コード例を追加しました。
VividRabbit_

2017/11/12 12:20

実装できました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問