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

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

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

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

333閲覧

KotlinでのviewPager実装

DDon

総合スコア37

Android

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2017/10/30 15:17

編集2022/01/12 10:55

スライドショーができるandroidアプリをkotlinで開発しているのですが、上手く実装出来ません。
androidアプリもあまり開発したことがなく、どこが間違っているのかもわかりません。

こちらのviewPagerのライブラリを使いました。
使用した理由は、自分で実装すると難しくなりそうだと思い、使用しました。
https://qiita.com/takaaki7/items/9f135eb9e52625eb206e
https://github.com/takaaki7/ArrayPagerAdapter

現状だとImageFragment.ktのthis.arguments.putString(itemKey, item)でアプリが落ちてしまいます。

ご教授頂けると幸いです。

MainActivity.kt

kotlin

1 2class MainActivity : AppCompatActivity() { 3 val TAG = "MainActivity" 4 5 @RequiresApi(Build.VERSION_CODES.DONUT) 6 override fun onCreate(savedInstanceState: Bundle?) { 7 super.onCreate(savedInstanceState) 8 setContentView(R.layout.activity_main) 9 10 // テスト用 11 val photo1 = "C:\Users\username\AndroidStudioProjects\PhotoApp\app\src\main\res\drawable\test.png" 12 val photo2 = "C:\Users\username\AndroidStudioProjects\PhotoApp\app\src\main\res\drawable\test2.png" 13 14 val adapter = ImageAdapter(supportFragmentManager, arrayListOf(photo1, photo2)) 15 // アダプターセット 16 (findViewById(R.id.viewPager) as ViewPager).adapter = adapter 17 } 18} 19

ImageAdapter.kt

kotlin

1 2class ImageAdapter(fm: FragmentManager, val datas: ArrayList<String>) : ArrayFragmentPagerAdapter<String>(fm,datas) { 3 4 override fun getCount(): Int { 5 return datas.size 6 } 7 8 override fun getFragment(item: String, position: Int): Fragment? { 9 return ImageFragment.newInstance(item,position) 10 } 11}

ImageFragment.kt

kotlin

1@Suppress("DEPRECATION") 2class ImageFragment: Fragment(){ 3 companion object { 4 val itemKey = "1" 5 6 fun newInstance(item :String, position: Int): Fragment { 7 return ImageFragment().apply { 8 this.arguments.putString(itemKey, item) 9 } 10 } 11 } 12 13 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { 14 return inflater.inflate(R.id.viewPager ,container) 15 } 16 17 override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { 18 val imageView = view!!.findViewById(R.id.slideImage) as ImageView 19 imageView.setImageResource(itemKey.toInt()) 20 } 21} 22

slide_image.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent"> 5 <ImageView 6 android:id="@+id/slideImage" 7 android:layout_width="match_parent" 8 android:layout_height="match_parent" /> 9</LinearLayout>

ErrorLog

10-30 12:49:49.698 22499-22499/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.doumaekazuki.photoapp, PID: 22499 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.putString(java.lang.String, java.lang.String)' on a null object reference at com.example.doumaekazuki.photoapp.ImageFragment$Companion.newInstance(ImageFragment.kt:23) at com.example.doumaekazuki.photoapp.ImageAdapter.getFragment(ImageAdapter.kt:18) at com.example.doumaekazuki.photoapp.ImageAdapter.getFragment(ImageAdapter.kt:9) at com.nakama.arrayviewpager.ArrayFragmentPagerAdapter.instantiateItem(ArrayFragmentPagerAdapter.java:66) at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1034) at android.support.v4.view.ViewPager.populate(ViewPager.java:1182) at android.support.v4.view.ViewPager.populate(ViewPager.java:1116) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1642) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1167) at android.widget.LinearLayout.onMeasure(LinearLayout.java:687) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:393) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) at android.view.View.measure(View.java:21998) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721) at android.view.View.measure(View.java:21998) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2410) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1498) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1751) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911) at android.view.Choreographer.doCallbacks(Choreographer.java:723) at android.view.Choreographer.doFrame(Choreographer.java:658) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

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

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

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

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

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

YasuhiroMiyake

2017/10/30 23:49

アプリが落ちるのであれば、クラッシュログが出力されていると思います。共有することは可能でしょうか。
DDon

2017/10/31 00:22

ログを追加致しました。こちらで合っていますでしょうか?
YasuhiroMiyake

2017/10/31 01:32

落ちていると把握されているところで、NullPointerExceptionが発生しています。nullのオブジェクトに対して実態がある時と同じ処理を行うと発生する例外です。まずは例外が発生している行でブレークポイントを止めて、nullになっているオブジェクトを特定して下さい。 > java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.putString(java.lang.String, java.lang.String)' on a null object reference
DDon

2017/10/31 09:47

どうやら使用しているライブラリの中が上手くいってないみたいです
YasuhiroMiyake

2017/10/31 11:46

putStringメソッドには、どちらの引数にもnullは渡していないということであっていますでしょうか。
DDon

2017/11/01 07:13

そうですね。ちょっとライブラリがあまりうまく使えてないみたいなので、別のアプローチでやってみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問