Android

Android再入門 - Twitterクライアントを作ってみよう - つぶやく

More than 5 years have passed since last update.


はじめに

タイムラインの表示ができたのでいよいよつぶやけるようにしましょう。


つぶやく画面を作る

まず、つぶやく画面を作りましょう。


レイアウトファイルを作る


  1. res/layout/を右クリックして、「New」>「Other...」をクリックします。


  2. 「Android XML Layout File」を選択して、「Next」をクリックします。



  3. File:に「activity_tweet」というファイル名を入力して、「RelativeLayout」を選択して、「Finish」をクリックします。




  4. 以下のようにXMLを変更します(説明は口頭で)。


    res/layout/activity_tweet.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp" >

    <Button
    android:id="@+id/action_tweet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:text="つぶやく" />

    <EditText
    android:id="@+id/input_text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/action_tweet"
    android:layout_marginBottom="8dp"
    android:ems="10"
    android:gravity="left|top"
    android:inputType="textMultiLine" >

    <requestFocus />
    </EditText>

    </RelativeLayout>


    プレビューではこんな感じになるはずです。




アクティビティを作る

次に、つぶやく画面のアクティビティを作りましょう。



  1. TweetActivityという名前のクラスを新しく作成します。アクティビティなのでandroid.app.Activityを継承します。




  2. 以下のようにonCreate()メソッドを定義してレイアウトファイルを指定します。


    TweetActivity.java

    package com.example.mytwitter;

    import android.app.Activity;
    import android.os.Bundle;

    public class TweetActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tweet);
    }
    }





  3. AndroidManifest.xmlにアクティビティの定義を追加します。アクティビティを追加するたびにマニフェストファイルに定義をする必要があるので忘れないように注意してください。


    AndroidManifest.xml

    <activity
    
    android:name=".TweetActivity"
    android:windowSoftInputMode="adjustResize" />

    android:windowSoftInputMode="adjustResize" は、キーボードが表示された時に画面サイズが再計算されるようにする設定です。




メニューからつぶやく画面に遷移する


メニューアイコン画像を追加する

まず、以下からメニューアイコン画像をダウンロードして、プロジェクトのres/drawable-xhdpi/に置いてください。

https://dl.dropbox.com/u/944822/start-android-2/ic_action_compose.png


メニュー定義を追加する


  1. res/menu/activity_main.xml を開きます。



  2. 以下のようにつぶやく画面に移動するためのメニュー定義を追加します。


    res/menu/activity_main.xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
    android:id="@+id/menu_refresh"
    android:icon="@drawable/ic_action_refresh"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:title="@string/menu_refresh"/>
    <item
    android:id="@+id/menu_tweet"
    android:icon="@drawable/ic_action_compose"
    android:orderInCategory="200"
    android:showAsAction="always"
    android:title="@string/menu_tweet"/>

    </menu>





  3. @string/menu_tweet が未定義なので res/values/strings.xmlに追加します。


    res/values/strings.xml

    <?xml version="1.0" encoding="utf-8"?>
    
    <resources>
    ...
    <string name="menu_tweet">つぶやく</string>
    ...




メニューが選択された時の処理を追加する

MainActivity.javaのonOptionsItemSelected()メソッドにmenu_tweetが選択された時の処理を追加します。今回は、つぶやく画面に遷移するだけです。


MainActivity.java

@Override

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_refresh:
reloadTimeLine();
return true;
case R.id.menu_tweet:
Intent intent = new Intent(this, TweetActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}


実行してみる

ActionBarのメニューアイコン画像をタップして、つぶやく画面に遷移すればOKです。

まだつぶやけないので次につぶやく処理を実装します。


つぶやく

それでは、いよいよTweetActivity.javaにつぶやく処理を実装します。


TweetActivity.java

public class TweetActivity extends FragmentActivity {

private EditText mInputText;
private Twitter mTwitter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tweet);

mTwitter = TwitterUtils.getTwitterInstance(this);

mInputText = (EditText) findViewById(R.id.input_text);

findViewById(R.id.action_tweet).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tweet();
}
});
}

private void tweet() {
AsyncTask<String, Void, Boolean> task = new AsyncTask<String, Void, Boolean>() {
@Override
protected Boolean doInBackground(String... params) {
try {
mTwitter.updateStatus(params[0]);
return true;
} catch (TwitterException e) {
e.printStackTrace();
return false;
}
}

@Override
protected void onPostExecute(Boolean result) {
if (result) {
showToast("ツイートが完了しました!");
finish();
} else {
showToast("ツイートに失敗しました。。。");
}
}
};
task.execute(mInputText.getText().toString());
}

private void showToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
}



実行してみる

何か入力して「つぶやく」ボタンを押してください。

成功すればトーストが表示されて、MainActivityに戻るはずです。

さらに、タイムラインを更新すれば自分のツイートが確認できるはずです。

以上でつぶやけるようになりました。お疲れ様でした!

ね?簡単でしょ?

目次へ戻る