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

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

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

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

Q&A

解決済

1回答

451閲覧

Activityの画面をlandscapeにすると、TextViewの表示で強制終了する。

mamonPro

総合スコア38

Android Studio

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

0グッド

0クリップ

投稿2017/11/21 06:26

編集2017/11/22 00:25

###前提・実現したいこと
画面を横向きにして使用したいため
ManifestのactivityにscreenOrientation="landscape"を設定しました。
で、文字列を表示させようとTextViewを入れて、
文字列を表示させようとするのですが、画面が強制終了します。

横向きにする際、別途ソースの補記が必要なのでしょうか。

landscape設定と合わせて
activity_main.xmlの表示は横向きにしてます。

###発生している問題・エラーメッセージ
どこで詳しいエラーメッセージが確認できるか
併せて教えて頂ければ助かります。

###該当のソースコード

Java

1Manifest.xml 2 3<?xml version="1.0" encoding="utf-8"?> 4<manifest xmlns:android="http://schemas.android.com/apk/res/android" 5 package="com.example.xxxx.chart_test"> 6 7 <application 8 android:allowBackup="true" 9 android:icon="@mipmap/ic_launcher" 10 android:label="@string/app_name" 11 android:roundIcon="@mipmap/ic_launcher_round" 12 android:supportsRtl="true" 13 android:theme="@style/AppTheme"> 14 <activity android:name=".MainActivity" 15 android:screenOrientation="landscape"> 16 <intent-filter> 17 <action android:name="android.intent.action.MAIN" /> 18 19 <category android:name="android.intent.category.LAUNCHER" /> 20 </intent-filter> 21 </activity> 22 </application> 23 24</manifest>

###試したこと
activity_main.xmlにただTextViewを置いておけば、エラーにはなりませんが
実行後は画面にそのテキスト文字は表示されていません。

2017/11/22追記
(teratailに不慣れなため、書き方、追記などが不適切であればご指摘ください)
keicha_hrsさんより助言をいただき、
エラー内容を見るためLogcatより確認してみました。
今回のエラーの大筋は【NullPointerException】ということが分かりました。
これがTextViewと関係があるという事でしょうか。
こちらでも、改めて調べてみます。
-----------------エラー内容--------------------------
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.xxxx.chart_test_1.MainActivity$TestView.onDraw(MainActivity.java:119)
at android.view.View.draw(View.java:17185)
at android.view.View.updateDisplayListIfDirty(View.java:16167)
at android.view.View.draw(View.java:16951)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.updateDisplayListIfDirty(View.java:16162)
at android.view.View.draw(View.java:16951)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.updateDisplayListIfDirty(View.java:16162)
at android.view.View.draw(View.java:16951)
at android.view.ViewGroup.drawChild(ViewGroup.java:3727)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513)
at android.view.View.draw(View.java:17188)
at com.android.internal.policy.DecorView.draw(DecorView.java:753)
at android.view.View.updateDisplayListIfDirty(View.java:16167)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:648)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:654)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:762)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2800)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2608)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2215)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
-----------------ここまで--------------------------

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

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

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

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

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

keicha_hrs

2017/11/21 09:49

Android Studioの左下の方に「6:Logcat」という部分があるはずです。ここをクリックすると、Androidの動作ログを出力するビューが表示されます。エラーがあればここに赤字でエラーが表示されるので、それを質問に追記すれば原因究明に繋がるでしょう。
guest

回答1

0

ベストアンサー

AndroidManifest.xml

XML

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.myapplication"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:roundIcon="@mipmap/ic_launcher_round" 10 android:supportsRtl="true" 11 android:theme="@style/AppTheme"> 12 <activity 13 android:name=".MainActivity" 14 android:screenOrientation="landscape"> 15 <intent-filter> 16 <action android:name="android.intent.action.MAIN" /> 17 18 <category android:name="android.intent.category.LAUNCHER" /> 19 </intent-filter> 20 </activity> 21 </application> 22 23</manifest>

res/layout/activity_main.xml

XML

1<?xml version="1.0" encoding="utf-8"?> 2<android.support.constraint.ConstraintLayout 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:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="com.example.myapplication.MainActivity"> 8 9 <TextView 10 android:id="@+id/textView" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:layout_marginStart="16dp" 14 android:layout_marginTop="16dp" 15 android:text="TextView" 16 app:layout_constraintLeft_toLeftOf="parent" 17 app:layout_constraintTop_toTopOf="parent" /> 18</android.support.constraint.ConstraintLayout> 19

MainActivity.java

package com.example.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.textView); textView.setText("あいうえおかきくけこ"); } }

出力結果

パッケージ名以外の部分で、これらと違うことをされているところがありますか?

投稿2017/11/21 09:54

keicha_hrs

総合スコア6768

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

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

mamonPro

2017/11/22 01:17

keicha_hrsさん ご回答ありがとうございます。 keicha_hrsさんから頂いた内容で完動しました。 実のところ、今回Canvas Paint(https://akira-watson.com/android/canvas-paint.html)で 折れ線グラフを書き、 そこのラベルに今回のTextViewを使用しようとして、うまくいっていないという状態です。 描画するときに、 TestView testView = new TestView(this); して setContentView(testView); してるから、TextViewが強制終了となっているようです。 その部分の解消方法を教えていただくことは可能でしょうか。 なお、大人の事情でMPAndroidChartのLineChartは現在使用できないため やむなく、直接Canvas Paintで描画しています。
mamonPro

2017/11/22 07:50

すみません、ちょっと自分で調べてみますね。追って報告いたします。
keicha_hrs

2017/11/22 08:43

エラーログからMainActivity.javaの119行目が原因であることがわかりますので、そこで用いているTextView型の変数の処理を追ってみることでしょうね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問