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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1921閲覧

スワイプのFragment上にActivity画面表示

sakuma_yujin

総合スコア27

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/07/24 07:45

###実現したいこと
前提としてFragmentを利用したスワイプできる画面があります。
Activityで作った画面をその中の1つ(Fragmant1)に表示してかつスワイプも実現していきたいです。

###発生している問題など
Fragmentについてまだ勉強不足なところがあるかと思いますが、スワイプした直後にすぐactivityを実行できるのかどうかがいまいちわかっていないので、教えてもらえると嬉しいです。


###1.スワイプを実現しているクラス
・Fragment0
・Fragment1
・Fragment2
・MyFragmentStatePagerAdapter
・Main2Activity

###1-2.スワイプ実現の該当のソースコード
スワイプで画面を横に切り替える ViewPager の利用方法
こちらのページを参考にしています
一応自分のコードを載せておきますが上記サイトのほうが見やすいかと思います。
import文のみ省略させてもらっています。

Fragment0(省略)

Fragment1

java

1 2 3public class Fragment1 extends Fragment { 4 5 @NonNull 6 @Override 7 public View onCreateView(LayoutInflater inflater, 8 ViewGroup container, 9 Bundle savedInstanceState) { 10 return inflater.inflate(R.layout.activity_fragment1, null); 11 12 } 13 14 15 16}

Fragment2(省略)

MyFragmentStatePagerAdapter

java

1 2 3public class MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter { 4 public MyFragmentStatePagerAdapter(FragmentManager fm) { 5 super(fm); 6 } 7 @Override 8 public Fragment getItem(int i) { 9 switch(i){ 10 case 0: 11 return new Fragment0(); 12 case 1: 13 return new Fragment1(); 14 default: 15 return new Fragment2(); 16 } 17 } 18 19 20 @Override 21 public int getCount() { 22 return 3; 23 } 24 @Override 25 public CharSequence getPageTitle(int position) { 26 return "Page " + position; 27 } 28}

Main2Activity

java

1 2 3public class Main2Activity extends FragmentActivity { 4 ViewPager viewPager; 5 Fragment0 fragment0; 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 9 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); 10 viewPager = (ViewPager) findViewById(R.id.pager); 11 viewPager.setAdapter( new MyFragmentStatePagerAdapter( getSupportFragmentManager())); 12 13 14 15 } 16 17 18} 19 20

###2.Fragment1上に表示したいActivity
・Memoapp

###2-1.該当のソースコード
Memoapp

java

1 2//ToDoアプリ 3public class Memoapp extends FragmentActivity { 4 5 6 7 private final static int WC = ViewGroup.LayoutParams.WRAP_CONTENT; 8 private final static int REQUEST_EDIT = 0; 9 private final static int MENU_ITEM0 = 0; 10 11 private ListView listView; 12 private ArrayList<MemoItem> items; 13 14 ViewPager viewPager; 15 Fragment1 fragment1; 16 @Override 17 public void onCreate(Bundle savedInstanceState) { 18 this.setTitle("ToDoアプリ"); 19 super.onCreate(savedInstanceState); setContentView(R.layout.activity_memo_app); 20 viewPager = (ViewPager) findViewById(R.id.pager); 21 viewPager.setAdapter( new MyFragmentStatePagerAdapter( getSupportFragmentManager())); 22 23 24 25 items = new ArrayList<MemoItem>(); 26 loadItems(); 27 28 listView = new ListView(this); 29 listView.setScrollingCacheEnabled(false); 30 listView.setAdapter(new MyAdapter()); 31 setContentView(listView); 32 } 33 34 @Override 35 public void onStop() { 36 super.onStop(); 37 38 saveItems(); 39 } 40 41 @Override 42 public boolean onCreateOptionsMenu(Menu menu) { 43 super.onCreateOptionsMenu(menu); 44 45 MenuItem item0 = menu.add(0, MENU_ITEM0, 0, "追加"); 46 item0.setIcon(android.R.drawable.ic_menu_add); 47 item0.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 48 return true; 49 } 50 51 @Override 52 public boolean onOptionsItemSelected(MenuItem item) { 53 int itemId = item.getItemId(); 54 if (itemId == MENU_ITEM0) { 55 startEditActivity(null); 56 } 57 return true; 58 } 59 60 private void startEditActivity(MemoItem item) { 61 Intent intent = new Intent(this, EditActivity.class); 62 if (item == null) { 63 intent.putExtra("pos", -1); 64 intent.putExtra("title", ""); 65 } else { 66 intent.putExtra("pos", items.indexOf(item)); 67 intent.putExtra("title", item.title); 68 } 69 Log.d("debug","F"); 70 71 startActivityForResult(intent, REQUEST_EDIT); 72 Log.d("debug","F2"); 73 } 74 75 @Override 76 protected void onActivityResult(int requestCode, 77 int resultCode, Intent intent) { 78 Log.d("debug","2"); 79 if (requestCode == REQUEST_EDIT && 80 resultCode == RESULT_OK) { 81 Bundle extras = intent.getExtras(); 82 if (extras != null) { 83 String result = extras.getString("result"); 84 int pos = extras.getInt("pos"); 85 String title = extras.getString("title"); 86 87 if (result.equals("add")) { 88 MemoItem item = new MemoItem(); 89 item.title = title; 90 items.add(item); 91 } 92 else if (result.equals("edit")) { 93 MemoItem item = items.get(pos); 94 item.title = title; 95 } 96 97 else if (result.equals("delete")) { 98 items.remove(pos); 99 } 100 101 ((BaseAdapter) listView.getAdapter()).notifyDataSetChanged(); 102 } 103 } 104 } 105 106 private class MyAdapter extends BaseAdapter { 107 @Override 108 public int getCount() { 109 return items.size(); 110 } 111 112 @Override 113 public MemoItem getItem(int pos) { 114 return items.get(pos); 115 } 116 117 @Override 118 public long getItemId(int pos) { 119 return pos; 120 } 121 122 @Override 123 public View getView(int pos, View view, ViewGroup parent) { 124 MemoItem item = items.get(pos); 125 LinearLayout layout = new LinearLayout(Memoapp.this); 126 127 if (view == null) { 128 129 layout.setBackgroundColor(Color.WHITE); 130 layout.setPadding( 131 MemoUtil.dp2px(Memoapp.this, 10), 132 MemoUtil.dp2px(Memoapp.this, 10), 133 MemoUtil.dp2px(Memoapp.this, 10), 134 MemoUtil.dp2px(Memoapp.this, 10)); 135 layout.setOnClickListener(new View.OnClickListener() { 136 @Override 137 public void onClick(View sender) { 138 int pos = Integer.parseInt((String) sender.getTag()); 139 MemoItem item = items.get(pos); 140 startEditActivity(item); 141 } 142 }); 143 144 } 145 view = layout; 146 return view; 147 } 148 } 149 150 151 private void saveItems() { 152 String json = list2json(items); 153 154 SharedPreferences pref = getSharedPreferences( 155 "ToDoApp", MODE_PRIVATE); 156 SharedPreferences.Editor editor = pref.edit(); 157 editor.putString("items", json); 158 editor.commit(); 159 } 160 161 private void loadItems() { 162 SharedPreferences pref = getSharedPreferences( 163 "ToDoApp", MODE_PRIVATE); 164 String json = pref.getString("items", ""); 165 166 items = items2list(json); 167 } 168 169 private String list2json(ArrayList<MemoItem> items) { 170 try { 171 JSONArray array = new JSONArray(); 172 for (MemoItem item : items) { 173 JSONObject obj = new JSONObject(); 174 obj.put("title", item.title); 175 array.put(obj); 176 } 177 return array.toString(); 178 } catch (JSONException e) { 179 e.printStackTrace(); 180 } 181 return ""; 182 } 183 184 private ArrayList<MemoItem> items2list(String json) { 185 ArrayList<MemoItem> items = new ArrayList<MemoItem>(); 186 try { 187 JSONArray array = new JSONArray(json); 188 for (int i = 0; i < array.length(); i++) { 189 JSONObject obj = array.getJSONObject(i); 190 MemoItem item = new MemoItem(); 191 item.title = obj.getString("title"); 192 items.add(item); 193 } 194 } catch (JSONException e) { 195 e.printStackTrace(); 196 } 197 return items; 198 } 199} 200

###補足情報(言語/FW/ツール等のバージョンなど)
AndroidStudio
java

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

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

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

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

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

guest

回答1

0

ベストアンサー

FragmentはActivityの中の一部分を切り出したものなので、Fragmentの中にActivityを配置することはできません。
設計を見直したほうがいいですよ。

投稿2017/07/24 08:18

yona

総合スコア18155

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

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

sakuma_yujin

2017/08/01 06:45

わかりました。もう一度最初から考えてみます。 またお世話になることがあるかもしれないのでよろしくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問