• ベストアンサー
  • 困ってます

Android Studioでタブアプリを作りたい

閲覧いただき、ありがとうございます。 超初心者のため、的外れな質問でしたら申し訳ありません。 http://yan-note.blogspot.jp/2012/10/android-fragmenttab.html こちらのサイトを参考に、Android Studio1.3を使って タブで画面を切り替えるアプリを作ってみたいと思っています。 最初のプロジェクト作成で「Blank Activity」を選択し、 サイトを参考にしながら「Fragment(Blank)」を二つ作成しました。 その後、タブを変更したときのリスナーを作成する、というところで つまづいてしまい、困っております。 これまでのFragment作成などは、同時にXMLが作成されるため 「プロジェクト」>「New」>「Fragment」>「Fragment(Blank)」で javaクラスを作成していたのですが、 リスナーに関するクラスを作るためのメニューがなく、困っています。 リスナーのクラスは、普通のクラス作成で作ってしまって良いのでしょうか? 非常に稚拙な質問で申し訳ないのですが、 ご回答いただけるとありがたいです。 どうぞよろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数184
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • shylock
  • ベストアンサー率73% (182/249)

今、手元に最新版のAndroid Studioがないので正確ではないかも知れませんが、作成のメニューがないなら普通のクラスとして作成してかまわないでしょう。リンク先を見ましたが、リスナークラスをpublicなクラスとして定義しているようですので、新しくクラスを作り、そこに記述していけばいいと思います。 基本的に、こうした開発ツールは、「手作業で作ると面倒なものを自動的に作ってくれる」というだけであり、「指定の機能を使わないと作れない」というわけではありません。メモ帳で全部のファイルを作ったってちゃんとアプリはできるんですから。 また、クラスというのは、別に役割分けがされているわけではありません。アクティビティのクラスは、アクティビティとして作らないといけないわけではないし、フラグメントもフラグメントのメニューで作らないといけないわけでもありません。クラスとして作っても全然問題ないんです。ただ、そうするとレイアウト用のXMLファイルなども自分で作らないといけないので、メニューを使ったほうが楽だ、というだけのことです。 あまり開発ツールの機能に頼らず、「その機能は何をするものか」を考え、ほんとうに必要なのは何なのか(メニューを選ぶことか、それとも指定のファイルを用意することか)を考えながら勉強されるとよいと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答いただき、ありがとうございます! 必ずしもメニューの中から作らないといけない、ということをお聞きし、目から鱗が落ちました。 開発ツールを使った開発が初めてで、完全独学でのアプリ作成ということもあり、 開発ツールの使い方で戸惑ってしまっておりました。 丁寧でわかりやすく説明していただき、本当に感謝しています。 ありがとうございました。

関連するQ&A

  • Fragment のデータ保持方法

    こんばんは。 現在Androidでフラグメントを利用してTABを作成するプログラムを書いております。 ご質問したいのは、FragmentTransactionのreplaceメソッドが起動した時に書き換わる先のフラグメントの保有するビューの情報を保持する方法です。 Fragment tab1 = new Fragment1(); Fragment tab2 = new Fragment2(); [tab1] fragmentTransaction.replace(R.id.realtabcontent, tab1); [tab2] fragmentTransaction.replace(R.id.realtabcontent, tab2); [それぞれ] fragmentTransaction.commit(); 上記のコードを使用し、IF文でそれぞれ選択されたタブのフラグメントに置き換える方法を使用していますが、この方法ですとFragment1でFragment2->TextView->append()などしても Fragment2のタブを開いた瞬間にinflateされてしまいFragmentが毎回初期化されてしまいます。 これをFragment2はViewの情報を保持しあるいは上書きするような方法があればそれを使い、 切り替えた時に編集後の情報が残っている状態を作りたいのですが、どのような方法がありますか? 方法として、別のクラスへViewのデータだけ逃しておいてinflate後に上書きするような方法を考えましたが、そういったことを実現するためのメソッドなどをどう調べてよいか分からなかったため質問させて頂きました。 ご教授宜しくお願いします。

  • AndroidのFragmentの画面遷移について

    AndroidのFragmentを使った画面遷移のプログラムが、実機で動作確認をしようとした瞬間、「問題が発生したため・・・・」と出て、動きません。ビルドは問題ないので、レイアウトが怪しいと思うのですが、わかりません。 ----------------------fragment_first.xml------------------------ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.ya_ka_do.test001.FirstFragment"> <!-- TODO: Update blank fragment layout --> <TextView android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/hello_blank_fragment" /> </FrameLayout> ----------------------MainActivity.java-------------------------- protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); FirstFragment firstfragment = new FirstFragment(); fragmentTransaction.replace(R.id.container,firstfragment); fragmentTransaction.commit(); } です。他は、とくに変更してないのですがどこか間違ってますか?

  • APIレベル

    AndroidStudioで新規プロジェクトの作成でGoogleマップアクティビティーを作成すると、地図を載せるFragmentがSupportMapFragmentで作成されます。これだActivityにFragmentを追加する時によく使うbeginTransaction().replaceがうまく行きません。自分のやり方がまずいんだと思いますが、SupportMapFragmentを調べると下記のようなこと書いてありました。 MapFragment オブジェクトをサポートするために、Google Maps Android API には API レベル 12 以降が必要です。API レベル 12 より前のアプリケーションを対象としている場合、同じ機能にアクセスするには SupportMapFragment クラスを使用します APIレベル12と言うことはHoneycomb MR1より前です。7年前くらいです。現在のAndroidパージョン別シェアを見てもAPI レベル 12 より前は1%もありません。 それで質問なのですが、今アプリを作る場合APIレベルはどのくらいまで対応させるのが普通なのでしょうか? またそれはどのような判断によるものでしょうか?

  • listview とactivity について

    android studio のアプリ制作でlistview とactivity についての使い方について、教えてください。初心者です。listview の画面と2つのactivities の遷移ぐらいだけは作成できます。 質問 : 20の国名をlistviewに並べて、各国名をクリックすれば、別の画面でその国の国旗の画像と簡単な説明文が読める内容です。新しいactivityを20個つくらずにする方法をわかりやすく教えてください。 ネットでずいぶん検索したんですが見当たりません。ある方から、”けんちんとん”さんというサイトを紹介されたのですが、少し古くかつeclipseなので設定が異なり、できませんでした。 初心者でわかりやすい動画やサイトが嬉しいのですが? よろしくお願いします。

  • アンドロイドアプリ開発超ド素人です。

    オリジナルデザインのウィジェットを作りたいと思い、とりあえず練習でホーム画面にテキストのウジェットを表示させたいです。 様々な参考サイトを見る限り、「新規Androidアプリケーションプロジェクト」の作成内でアクティビティ作成のチェックを外してからプロジェクトを作ると書いてあります。 しかし、チェックを外してからプロジェクトを作成すると、layout内にあるはずのの「main.xml」ファイルが存在しません。(チェックをつけた状態でプロジェクトを作成すると、「layout内にactivity_main.xml」、「menu内にmain.xml」が作成されます。) 参考サイトではどれも、「main.xmlをRemoteViews」にセットするみたいな記述が書いてあるので、困ってます。 layout内に手動でmain.xmlを作って試したのですが、うまくいきませんでした。 エクリプス、SDKなどは、「adt-bundle-windows-x86-20130522」にまとまって入っていたのを使用しています。 使っているサイトはこちらです。 http://boco.hp3200.com/beginner/widget01-1.html ↓ どうすればウジェットが作れるのか、詳しく教えてもらえると嬉しいですm(_ _)m

    • ベストアンサー
    • Java
  • ★Eclipse で、プロジェクトから別のプロジェクトを参照する方法

    現在、Javaでプログラムを作成しているのですが、2つのプロジェクトを作り、BからAプロジェクトを利用している形にしてます。 Eclipse上で、BプロジェクトのJava Build Path のProjectsタブに、Aプロジェクトを指定しているのですが、 どうもAプロジェクト内のクラスが認識されず、リンクエラーになります。 Aプロジェクトをビルドしてjarを作成し、このjarをLibrariesタブに追加すると、問題なく参照解決されます。 このような症状をご存知の方、いませんでしょうか?

    • ベストアンサー
    • Java
  • Androidの並列処理(定期実行)

    http://d.hatena.ne.jp/shuji_w6e/20090701/1246459813 上記のURLを参考に、定期的にGPS情報を取得しDB登録するSampleプログラムを作成しました。 public void run() {    textView.setText(new Date().toString()); } } のrun()の中身をGPS取得する処理に変更しただけで、そこまでは上手くいきました。 このSampleは単一のActivityクラスだけで構成されていますが、この「定期的にGPS情報を取得する」という処理を別クラスにしたいと考えました。 そこでActivityを継承した、「GetGpsService」というクラスを作成し、そのクラスをmainのActivityから呼び出せばいいと思ったのですが、上手くいきません。 単純にmainのActivityで、GetGpsServiceのインスタンスをnewすれば、GetGpsServiceのonCreateが実行されて処理が実行されると思っていたのですが、newしてもクラス内のどこのBreakPointにも止まりませんでした。根本的な考え方が間違っているのでしょうが、別クラスにしたGPS情報の定期取得処理をmainのActivityから呼び出すには、どのようにしたら良いのでしょうか? 画面変遷がなくても、intent等を使う必要があるのでしょうか?

    • ベストアンサー
    • Java
  • Eclipseで新規クラスを作成時、スーパークラスをjava.lang.Object以外にするには?

    最近Eclipseを使い始めましたが、パッケージエクスプローラがよくわかりません。 Javaプロジェクトを新規に作成し、 インポートを使って既存のjarファイルをそのプロジェクト内に配置しました。 その後、プロジェクトフォルダを右クリックし、 「ビルド・パス」-「ビルド・パスの構成」から 「ライブラリ」タブの「JARの追加」から先述のjarファイルを選択しました。 これでビルド・パスは通ったと思ったのですが、 新規クラスを作成する際にスーパークラスは「java.lang.Object」しか選択できず、 追加したJARにあるクラスが選択できません。 新規クラス作成時のウィザード画面で追加したJARにあるクラスを 選択するにはどうすればよいのでしょうか? また、そもそもこのやり方でビルド・パスは通っているのでしょうか? 以上、よろしくお願いします。

    • ベストアンサー
    • Java
  • eclipseとtomcat

    eclipseとtomcat 質問失礼します。 現在Tomcatを用いたWebアプリケーションの開発を始めています。 参考にしているサイトは http://www.searchman.info/java_eclipse/1100.html です。 かなり初歩的な質問かもしれませんが調べても解決策が見つからないのでお願いします。 Eclipse上でTomcatプロジェクトを始める時に、プロジェクト名を入力して「終了」を選択しても、プロジェクト作成画面が閉じないという現象が起きています。 現状では左側のツリーには作成したプロジェクトはできており、そのまま開発もできています。プロジェクト作成ウィンドウはキャンセルで閉じています。 しかし、参考サイトによるとプロジェクトが作成されると、C:\Tomcat6_0\conf\server.xml のファイルの中に作成されたプロジェクトが書き加わっているはずなのですが、確認したところ加わっていない状態です。 結局eclipse上で作成したプログラムを動かしても「404エラー」が出てしまいます。 恐らくTomcatプロジェクトがしっかり作成できていないのが原因だと思うのですが・・・・・ 何か原因がわかる方いましたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • SWTのイベント発生

    (質問) SWINGではなくSWTで自作のEVENT発生のプログラムを作りたい場合どのように記述すればよいのでしょうか。SWTでEVENTなどを継承しようとするとエラーになります。 SWTはSWINGに比べてサイトも少なく参考になりそうなところが探し出せませんでした。ご存知の方がおられましたら 教えていただけないでしょうか。 やりたいことはあるクラスからリスナーを登録してイベントの発生を知ることが出来ればいいのですが。