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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

2回答

6417閲覧

Bottom Navigation Activity を使用してFragmentの画面遷移を行いたい

hiziki

総合スコア54

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2017/03/03 15:30

編集2017/03/04 11:44

AndroidStudio2.3 の「Bottom Navigation Activity」を利用して、fragmentの画面遷移を行いたいのですが、最初の画面(Main)が表示されるのはいいのですが、下部メニュー部をタッチすると、

「問題が発生したため、「アプリ名」を終了します。」

というエラーが出てしまいます。

###追記:Logcat(赤字部抜粋)です

logcat

103-04 00:47:01.287 7080-7080/sfw.tabtest E/AndroidRuntime: FATAL EXCEPTION: main 2 Process: sfw.tabtest, PID: 7080 3 java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.FragmentTransaction android.support.v4.app.FragmentManager.beginTransaction()' on a null object reference 4 at sfw.tabtest.MainActivity$1.onNavigationItemSelected(MainActivity.java:33) 5 at android.support.design.widget.BottomNavigationView$1.onMenuItemSelected(BottomNavigationView.java:141) 6 at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:817) 7 at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:156) 8 at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:964) 9 at android.support.design.internal.BottomNavigationMenuView$1.onClick(BottomNavigationMenuView.java:89) 10 at android.view.View.performClick(View.java:4756) 11 at android.view.View$PerformClick.run(View.java:19749) 12 at android.os.Handler.handleCallback(Handler.java:739) 13 at android.os.Handler.dispatchMessage(Handler.java:95) 14 at android.os.Looper.loop(Looper.java:135) 15 at android.app.ActivityThread.main(ActivityThread.java:5221) 16 at java.lang.reflect.Method.invoke(Native Method) 17 at java.lang.reflect.Method.invoke(Method.java:372) 18 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 19 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

###ソースコード
activity_main.xml

XML

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:id="@+id/container" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 android:orientation="vertical" 9 tools:context="sfw.tabtest.MainActivity"> 10 11 <FrameLayout 12 android:id="@+id/content" 13 android:layout_width="match_parent" 14 android:layout_height="0dp" 15 android:layout_weight="0.65"> 16 17 <fragment 18 android:id="@+id/fragment" 19 android:name="sfw.tabtest.main" 20 android:layout_width="match_parent" 21 android:layout_height="match_parent" /> 22 </FrameLayout> 23 24 <android.support.design.widget.BottomNavigationView 25 android:id="@+id/navigation" 26 android:layout_width="match_parent" 27 android:layout_height="wrap_content" 28 android:layout_gravity="bottom" 29 android:background="?android:attr/windowBackground" 30 app:menu="@menu/navigation" /> 31 32</LinearLayout>

MainActivity.java(修正前)

Java

1package sfw.tabtest; 2 3import android.os.Bundle; 4import android.support.annotation.NonNull; 5import android.support.design.widget.BottomNavigationView; 6import android.support.v4.app.Fragment; 7import android.support.v4.app.FragmentManager; 8import android.support.v4.app.FragmentTransaction; 9import android.support.v7.app.AppCompatActivity; 10import android.view.MenuItem; 11 12public class MainActivity extends AppCompatActivity { 13 14 private Fragment fragment; 15 private FragmentManager fragmentManager; 16 17 private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener 18 = new BottomNavigationView.OnNavigationItemSelectedListener() { 19 20 @Override 21 public boolean onNavigationItemSelected(@NonNull MenuItem item) { 22 switch (item.getItemId()) { 23 case R.id.navigation_home: 24 fragment = new main(); 25 break; 26 case R.id.navigation_upload: 27 fragment = new upload(); 28 break; 29 case R.id.navigation_setting: 30 fragment = new Setting(); 31 break; 32 } 33 final FragmentTransaction transaction = fragmentManager.beginTransaction(); 34 transaction.replace(R.id.content, fragment).commit(); 35 return true; 36 } 37 }; 38 39 @Override 40 protected void onCreate(Bundle savedInstanceState) { 41 super.onCreate(savedInstanceState); 42 setContentView(R.layout.activity_main); 43 44 fragment = new main(); 45 BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); 46 navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 47 } 48}

MainActivity.java(修正後ーこの構文で動きました)

Java

1package sfw.tabtest; 2 3import android.os.Bundle; 4import android.support.annotation.NonNull; 5import android.support.design.widget.BottomNavigationView; 6import android.support.v4.app.Fragment; 7import android.support.v4.app.FragmentManager; 8import android.support.v4.app.FragmentTransaction; 9import android.support.v7.app.AppCompatActivity; 10import android.view.MenuItem; 11 12public class MainActivity extends AppCompatActivity { 13 14 private Fragment fragment; 15 private FragmentManager fragmentManager; 16 17 private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener 18 = new BottomNavigationView.OnNavigationItemSelectedListener() { 19 20 @Override 21 public boolean onNavigationItemSelected(@NonNull MenuItem item) { 22 switch (item.getItemId()) { 23 case R.id.navigation_home: 24 fragment = new main(); 25 break; 26 case R.id.navigation_upload: 27 fragment = new upload(); 28 break; 29 case R.id.navigation_setting: 30 fragment = new Setting(); 31 break; 32 } 33 final FragmentTransaction transaction = fragmentManager.beginTransaction(); 34 transaction.replace(R.id.content, fragment).commit(); 35 return true; 36 } 37 }; 38 39 @Override 40 protected void onCreate(Bundle savedInstanceState) { 41 super.onCreate(savedInstanceState); 42 setContentView(R.layout.activity_main); 43 //追記 44 fragmentManager = getSupportFragmentManager(); 45 //追記終わり 46 fragment = new main(); 47 BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); 48 navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 49 } 50}

fragment_main.xml

XML

1package sfw.tabtest; 2 3import android.os.Bundle; 4import android.support.v4.app.Fragment; 5import android.view.LayoutInflater; 6import android.view.View; 7import android.view.ViewGroup; 8 9 10public class main extends Fragment { 11 12 public main() { 13 } 14 @Override 15 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 16 return inflater.inflate(R.layout.fragment_main, container, false); 17 } 18}

main.java

java

1package sfw.tabtest; 2 3import android.os.Bundle; 4import android.support.v4.app.Fragment; 5import android.view.LayoutInflater; 6import android.view.View; 7import android.view.ViewGroup; 8 9 10public class main extends Fragment { 11 12 public main() { 13 } 14 @Override 15 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 16 return inflater.inflate(R.layout.fragment_main, container, false); 17 } 18}

※fragment_upload.xml,fragment_setting.xml,upload.java,Setting.javaも基本的な構造は同じです。

###試したこと
build.gradle(Modulu:app)に

compile 'com.android.support:design:25.0.0'

を挿入してみました。

###参考にしたサイト等

Android Bottom Navigation View Example
stackoverflowーset new theme for app when switch fragment

###バージョン、デバッグ環境
PC:Windows10
AndroidStudio:バージョン2.3

デバッグ環境
Genymotion:バージョン2.8.1
Custom Phone-5.0.0(API21)

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

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

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

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

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

xenbeat

2017/03/03 15:49

エラー発生時の、Android Studioのlogcatビューの内容を追記ください
hiziki

2017/03/03 15:58

情報の追加の依頼ありがとうございます。パソコンシャットダウンしてしまったのと、本日用事があるので追記遅れます。
guest

回答2

0

fragment_main.xmlのコードが間違っていますが
ここは、、、どうなりますか?

投稿2018/06/13 09:30

syyyow

総合スコア28

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

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

0

ベストアンサー

fragmentManegerを初期化してないからじゃないですか?

投稿2017/03/03 15:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hiziki

2017/03/03 16:08

ご回答ありがとうございます。fragmentMamegerを初期化する方法を教えていただいても良いでしょうか?
退会済みユーザー

退会済みユーザー

2017/03/03 16:10

getSupportFragmentManeger()でフラグメントマネージャーを取得出来ます。activityのonCreateで初期化して下さい。
hiziki

2017/03/04 11:45 編集

ご回答ありがとうございました!MainActivityのonCreate内に fragmentManager = getSupportFragmentManager(); を挿入することでできました!本当にありがとうございました。 もし、同じようなことをやろうとしている人がいるのであれば、修正後の構文を載せてますのでよろしければお使いください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問