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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

3回答

5582閲覧

FrameLayoutを取得してaddviewしたいのですが、nullになってしまいます。

giant

総合スコア132

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2017/09/25 06:49

編集2017/09/25 12:31

下のようなコードでframeLayoutを取得できません。

java

1 public void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 4 mSurfaceView = new AnimationSurfaceView(this); 5 6 mSurfaceView = (AnimationSurfaceView) this.findViewById(R.id.surface); 7 FrameLayout frameLayout =(FrameLayout)this.findViewById(R.id.root); 8 9 10 frameLayout.addView(mSurfaceView, 0, new FrameLayout.LayoutParams(WC, WC)); 11 12 setContentView(R.layout.player_activity); 13 } 14

//fragmentで使っていたコード(もともとActivityのコードをFragmentように変更したのに、Activityのコードをどう書いていいかわからなくなってしまいました。Fragmentでは動いています。

java

1 @Override 2 public View onCreateView(LayoutInflater inflater, ViewGroup container, 3 Bundle savedInstanceState) { 4 return inflater.inflate(R.layout.fragment_camera2_basic, container, false); 5 } 6 7 @Override 8 public void onViewCreated(final View view, Bundle savedInstanceState) { 9 mTextureView = (AutoFitTextureView) view.findViewById(R.id.texture); 10 11 12 if(mTextureView==null){ 13 Log.e(TAG,"mTextureVieがnull"); 14 } 15 Log.e(TAG,"mSurfaceViewに値をセットした"); 16 mSurfaceView = (AnimationSurfaceView) view.findViewById(R.id.surface); 17 Log.e(TAG,"mSurfaceViewに値をセットした"); 18 mSurfaceView.setZOrderOnTop(true); 19 mSurfaceView = new AnimationSurfaceView(getActivity()); 20 21 FrameLayout frameLayout =(FrameLayout)view.findViewById(R.id.framelayout); 22 frameLayout.addView(mSurfaceView, 0, new FrameLayout.LayoutParams(WC, WC)); 23 }

java

1<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 android:id="@+id/root" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:keepScreenOn="true"> 8 9 10 <com.google.android.exoplayer2.demo.AutoFitTextureView 11 android:id="@+id/texture" 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:layout_alignParentBottom="true" 15 android:layout_alignParentStart="true" 16 android:layout_alignParentTop="true" /> 17 18 <com.google.android.exoplayer2.ui.SimpleExoPlayerView android:id="@+id/player_view" 19 android:layout_width="match_parent" 20 android:layout_height="match_parent" 21 app:resize_mode="fill" 22 /> 23 <!--app:resize_mode="fixed_height"--> 24 <!--app:resize_mode="fill" これを入れると、AutoLayoutに影響が出る--> 25 26 27 <com.example.android.camera2basic.AnimationSurfaceView 28 android:id="@+id/surface" 29 android:layout_width="match_parent" 30 android:layout_height="match_parent" 31 32 /> 33 34</FrameLayout>

java

1E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.exoplayer2.demo/com.google.android.exoplayer2.demo.PlayerActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.FrameLayout.addView(android.view.View, int, android.view.ViewGroup$LayoutParams)' on a null object reference 2 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596) 3 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2678) 4 at android.app.ActivityThread.-wrap11(ActivityThread.java) 5 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494) 6 at android.os.Handler.dispatchMessage(Handler.java:111) 7 at android.os.Looper.loop(Looper.java:207) 8 at android.app.ActivityThread.main(ActivityThread.java:5822) 9 at java.lang.reflect.Method.invoke(Native Method) 10 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 11 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749) 12 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.FrameLayout.addView(android.view.View, int, android.view.ViewGroup$LayoutParams)' on a null object reference 13 at com.google.android.exoplayer2.demo.PlayerActivity.onCreate(PlayerActivity.java:478)

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

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

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

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

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

guest

回答3

0

Java

1 mSurfaceView = new AnimationSurfaceView(this); 2 3 mSurfaceView = (AnimationSurfaceView) this.findViewById(R.id.surface); // ←上の行で作ったインスタンスを即破棄? 4 FrameLayout frameLayout =(FrameLayout)this.findViewById(R.id.root); 5 6 frameLayout.addView(mSurfaceView, 0, new FrameLayout.LayoutParams(WC, WC)); // ←XMLで配置した描画済みのViewをさらにaddViewしたい?

やってることの意味がわかりません。まさにカオス。

投稿2017/09/25 13:03

keicha_hrs

総合スコア6768

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

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

giant

2017/09/26 00:19

frameLayout.addView これは、動的に追加するコードに使うものなのでしょうか?
keicha_hrs

2017/09/26 13:26 編集

うーん、むしろその「動的」に対する「静的」ってなんなんでしょう?「プログラムコードによってレイアウトを配置すること」を「動的」と称するならば、setContentView()による描画さえも「動的」と言えます。ただ、setContentView()によってActivityの初期描画をすることを敢えて「静的」と称し、そこにプログラムの経過によってViewを追加することを「動的」と称するならば、その「動的」のために用いるのがaddView()ですから、まあそういうことなのでしょう。
giant

2017/09/26 13:37

ありがとうございます。静的、動的と例えるのはいい表現ではなかったですね。 勉強になりました。ありがとうございました。
guest

0

setContentView(R.layout.player_activity);super.onCreate(savedInstanceState);の次の行に持ってきてください

投稿2017/09/25 08:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

giant

2017/09/26 00:20 編集

ありがとうございます。
guest

0

ベストアンサー

setContentView等でActivityに配置されるViewが登録される前はfindViewByIdでViewを探すことはできません。

投稿2017/09/25 06:53

yona

総合スコア18155

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

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

giant

2017/09/25 12:03 編集

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749) Caused by: android.view.InflateException: Binary XML file line #42: Binary XML file line #42: Error inflating class com.example.android.camera2basic.AnimationSurfaceView at android.view.LayoutInflater.inflate(LayoutInflater.java:539) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:406) at android.app.Activity.setContentView(Activity.java:2228) at com.google.android.exoplayer2.demo.PlayerActivity.onCreate(PlayerActivity.java:469) setContentViewを先にやったところこのようなエラーが出ています。どうすればいいのでしょうか? どうぞよろしくお願いします。
yona

2017/09/25 12:37

以前に回答したと思いますが、AnimationSurfaceViewのコンストラクタに実装ミスがあった時と同じエラーメッセージですよね? 質問から得た回答からなにも学ばないんですか?
giant

2017/09/26 00:20

<com.google.android.exoplayer2.demo.AnimationSurfaceView android:id="@+id/surface" android:layout_width="match_parent" android:layout_height="match_parent" /> ここのパッケージ名がコピペのままになっていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問