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

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

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

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

Android

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

Q&A

解決済

2回答

5347閲覧

Android Fragmentについて

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Android

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

0グッド

1クリップ

投稿2014/09/19 04:48

Fragmentで複数Tabを用意して一つ目のTabにListviewを実装したいのですが何故か表示されません
いろいろサイトを回ったのですがわかりません、初心者なので簡単な見落としミスかもしれないのですが宜しくお願いします

lang

1 2listview.xml 3 4<?xml version="1.0" encoding="utf-8"?> 5<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:orientation="vertical" > 9 10 <ListView 11 android:layout_height="wrap_content" 12 android:id="@+id/listView" 13 android:layout_width="match_parent" 14 ></ListView> 15 16</LinearLayout> 17 18 19Fragment1.java 20 21package com.example.fragmenttest; 22 23import android.os.Bundle; 24import android.app.Fragment; 25import android.view.LayoutInflater; 26import android.view.View; 27import android.view.ViewGroup; 28 29public class Fragment1 extends Fragment { 30 31 @Override 32 public View onCreateView( 33 LayoutInflater inflater, 34 ViewGroup container, 35 Bundle savedInstanceState) { 36 return inflater.inflate(R.layout.listview, container, false); 37 } 38 39} 40 41ListActivity.java 42 43 44package com.example.fragmenttest; 45 46import android.app.Activity; 47import android.os.Bundle; 48import android.view.View; 49import android.widget.AdapterView; 50import android.widget.ArrayAdapter; 51import android.widget.ListView; 52import android.widget.Toast; 53 54import com.example.fragmenttest.R.id; 55 56public class ListViewActivity extends Activity { 57 @Override 58 public void onCreate(Bundle savedInstanceState) { 59 super.onCreate(savedInstanceState); 60 setContentView(R.layout.listview); 61 62 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 63 // アイテムを追加します 64 adapter.add("red"); 65 adapter.add("green"); 66 adapter.add("blue"); 67 ListView listView = (ListView) findViewById(id.listview); 68 // アダプターを設定します 69 listView.setAdapter(adapter); 70 // リストビューのアイテムがクリックされた時に呼び出されるコールバックリスナーを登録します 71 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 72 @Override 73 public void onItemClick(AdapterView<?> parent, View view, 74 int position, long id) { 75 ListView listView = (ListView) parent; 76 // クリックされたアイテムを取得します 77 String item = (String) listView.getItemAtPosition(position); 78 Toast.makeText(ListViewActivity.this, item, Toast.LENGTH_LONG).show(); 79 } 80 }); 81 // リストビューのアイテムが選択された時に呼び出されるコールバックリスナーを登録します 82 listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 83 @Override 84 public void onItemSelected(AdapterView<?> parent, View view, 85 int position, long id) { 86 ListView listView = (ListView) parent; 87 // 選択されたアイテムを取得します 88 String item = (String) listView.getSelectedItem(); 89 Toast.makeText(ListViewActivity.this, item, Toast.LENGTH_LONG).show(); 90 } 91 @Override 92 public void onNothingSelected(AdapterView<?> parent) { 93 } 94 }); 95 } 96} 97 98MainActivity.java 99 100 101package com.example.fragmenttest; 102 103 104import android.os.Bundle; 105import android.app.ActionBar; 106import android.app.Activity; 107import android.app.FragmentTransaction; 108import android.app.ActionBar.Tab; 109import android.app.ActionBar.TabListener; 110import android.app.Fragment; 111 112public class MainActivity extends Activity { 113 114 @Override 115 protected void onCreate(Bundle savedInstanceState) { 116 super.onCreate(savedInstanceState); 117 setContentView(R.layout.activity_main); 118 119 final ActionBar actionBar = getActionBar(); 120 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 121 122 actionBar.addTab(actionBar 123 .newTab() 124 .setText("TAB 1") 125 .setTabListener( 126 new MainTabListener<Fragment1>( 127 this, 128 "f1", 129 Fragment1.class 130 ) 131 ) 132 ); 133 actionBar.addTab(actionBar 134 .newTab() 135 .setText("TAB 2") 136 .setTabListener( 137 new MainTabListener<Fragment2>( 138 this, 139 "f2", 140 Fragment2.class 141 ) 142 ) 143 ); 144 } 145 146 public static class MainTabListener<T extends Fragment> 147 implements TabListener { 148 149 private Fragment fragment; 150 private final Activity activity; 151 private final String tag; 152 private final Class<T> cls; 153 154 public MainTabListener( 155 Activity activity, String tag, Class<T> cls){ 156 this.activity = activity; 157 this.tag = tag; 158 this.cls = cls; 159 } 160 161 @Override 162 public void onTabReselected(Tab tab, FragmentTransaction ft) { 163 } 164 165 @Override 166 public void onTabSelected(Tab tab, FragmentTransaction ft) { 167 if(fragment == null){ 168 fragment = Fragment.instantiate(activity, cls.getName()); 169 ft.add(android.R.id.content, fragment, tag); 170 } 171 else{ 172 ft.attach(fragment); 173 } 174 } 175 176 @Override 177 public void onTabUnselected(Tab tab, FragmentTransaction ft) { 178 if(fragment != null){ 179 ft.detach(fragment); 180 } 181 } 182 } 183} 184 185

です。宜しくお願いします

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

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

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

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

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

guest

回答2

0

ベストアンサー

とりあえず動いたので報告。
自分も勉強中の身なので間違えたことを言っているかもしれませんが、ご了承ください。

まず、Fragmentの中にListViewを表示したいならActiviteではなくてFragmentを継承しないといけないと思います。

ListViewActivity を ListViewFragment として作り直します。修正が必要なところは適時修正。
ディレクトリ構成がk135002様とは違うのでもしエラーが出たら適当な形に直してください。

ListViewFragment.java

lang

1import android.app.Fragment; 2import android.util.Log; 3import android.view.LayoutInflater; 4import android.view.View; 5import android.view.ViewGroup; 6import android.os.Bundle; 7import android.widget.AdapterView; 8import android.widget.ArrayAdapter; 9import android.widget.ListView; 10import android.widget.Toast; 11 12public class ListViewFragment extends Fragment { 13 14 View view; 15 16 @Override 17 public View onCreateView(LayoutInflater inflater, ViewGroup container, 18 Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 21 view = inflater.inflate(R.layout.listview, container, false); 22 23 return view; 24 } 25 26 @Override 27 public void onActivityCreated(Bundle savedInstanceState) { 28 super.onActivityCreated(savedInstanceState); 29 30 ArrayAdapter<String> adapter = new ArrayAdapter<String>( 31 view.getContext(), android.R.layout.simple_list_item_1); 32 // アイテムを追加します 33 adapter.add("red"); 34 adapter.add("green"); 35 adapter.add("blue"); 36 ListView listView = (ListView) view.findViewById(R.id.listView); 37 // アダプターを設定します 38 listView.setAdapter(adapter); 39 // リストビューのアイテムがクリックされた時に呼び出されるコールバックリスナーを登録します 40 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 41 @Override 42 public void onItemClick(AdapterView<?> parent, View view, 43 int position, long id) { 44 ListView listView = (ListView) parent; 45 // クリックされたアイテムを取得します 46 String item = (String) listView.getItemAtPosition(position); 47 Toast.makeText(view.getContext(), item, Toast.LENGTH_LONG) 48 .show(); 49 } 50 }); 51 // リストビューのアイテムが選択された時に呼び出されるコールバックリスナーを登録します 52 listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 53 @Override 54 public void onItemSelected(AdapterView<?> parent, View view, 55 int position, long id) { 56 ListView listView = (ListView) parent; 57 // 選択されたアイテムを取得します 58 String item = (String) listView.getSelectedItem(); 59 Toast.makeText(view.getContext(), item, Toast.LENGTH_LONG) 60 .show(); 61 } 62 63 @Override 64 public void onNothingSelected(AdapterView<?> parent) { 65 } 66 }); 67 } 68}

Fragment1、Fragment2がないので、MainActivityの中のaddTabは上記で作成したListViewFragmentだけにします。

lang

1actionBar.addTab(actionBar 2 .newTab() 3 .setIcon(getResources().getDrawable(R.drawable.ic_launcher)) 4 .setTabListener( 5 new MainTabListener<ListViewFragment>(this, "f3",ListViewFragment.class))); 6

いかがでしょうか?
これでも動かなかったら修正個所の記述が漏れているかもしれないので教えてくださいませ。

投稿2014/09/19 10:25

Akku

総合スコア21

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

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

退会済みユーザー

退会済みユーザー

2014/09/19 14:44

言われた通りにソースを変更したら無事動きました! ありがとうございます 変更前と見比べて自分でも理解していけるよう頑張ります
guest

0

Fragment1.java

lang

1@Override 2public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 3 View view = inflater.inflate(R.layout.listview, container, false); 4 5 ListView listView = (ListView) view.findViewById(R.id.listview); 6 7 // TODO ここにListViewActivity#onCreate() 内の処理を移動 8 9 return view; 10}

投稿2014/09/19 10:15

YukiYoshida

総合スコア93

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問