質問するログイン新規登録

質問編集履歴

6

onCreateの記述

2017/04/20 03:11

投稿

ko20vonobird
ko20vonobird

スコア50

title CHANGED
File without changes
body CHANGED
@@ -100,4 +100,38 @@
100
100
  java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
101
101
  ```
102
102
  なぜなのかわかりません。
103
- ・追記:抜けていたxmlファイルのidの記述を追加しました。
103
+ ・追記:抜けていたxmlファイルのidの記述を追加しました。
104
+ ・追記:onCreateの部分を記述します。
105
+ ```java
106
+ @Override
107
+ protected void onCreate(Bundle savedInstanceState) {
108
+ super.onCreate(savedInstanceState);
109
+ Intent i4 = getIntent();
110
+ LR = i4.getStringExtra("LR");
111
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
112
+ //setContentView(R.layout.activity_main);
113
+ //ステータスバー非表示
114
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
115
+ //タイトルバー非表示
116
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
117
+ setNavigationbarHide(this, true);
118
+
119
+ LayoutInflater factory = LayoutInflater.from(this);
120
+ View view = factory.inflate(R.layout.activity_game, null);
121
+ setContentView(view);
122
+
123
+ Random rnd = new Random();
124
+ WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
125
+ Display dp = wm.getDefaultDisplay();
126
+ Point po = new Point();
127
+ dp.getSize(po);
128
+ winW = po.x;
129
+ winH = po.y;
130
+ perpower = 20;
131
+ spower = rnd.nextInt(perpower);
132
+ forspower = (int)(1000 * (1 / spower));
133
+ rpower = winW - ((winW * 0.05) + (winW * spower));//右(利き)基準
134
+ lpower = (winW * 0.25) - (winW * spower);//左(利き)基準
135
+ stamina = 10 + rnd.nextInt(30);//時間耐久度
136
+ }
137
+ ```

5

コードの修正

2017/04/20 03:11

投稿

ko20vonobird
ko20vonobird

スコア50

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,7 @@
8
8
  <android.support.percent.PercentFrameLayout
9
9
  xmlns:android="http://schemas.android.com/apk/res/android"
10
10
  xmlns:app="http://schemas.android.com/apk/res-auto"
11
+ android:id="@+id/pfl"
11
12
  android:layout_width="match_parent"
12
13
  android:layout_height="match_parent"
13
14
  android:gravity="top">
@@ -98,4 +99,5 @@
98
99
  ```
99
100
  java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
100
101
  ```
101
- なぜなのかわかりません。
102
+ なぜなのかわかりません。
103
+ ・追記:抜けていたxmlファイルのidの記述を追加しました。

4

追記

2017/04/19 14:45

投稿

ko20vonobird
ko20vonobird

スコア50

title CHANGED
File without changes
body CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  ###追記
84
84
  調べた中で、階層を成しているViewは上層のものをinvalidate();しないという記事を発見しました。なので、以下の記述を操作するメインのjavaファイルに加えました。
85
- **※記述した場所は色々なメソッドを書いている部分です**
85
+ **※記述した場所は色々なメソッドを書いている部分の一部です**
86
86
  ```java
87
87
  @Override
88
88
  public boolean onTouchEvent(Motion event){

3

追記の追記

2017/04/19 13:27

投稿

ko20vonobird
ko20vonobird

スコア50

title CHANGED
File without changes
body CHANGED
@@ -82,10 +82,17 @@
82
82
 
83
83
  ###追記
84
84
  調べた中で、階層を成しているViewは上層のものをinvalidate();しないという記事を発見しました。なので、以下の記述を操作するメインのjavaファイルに加えました。
85
+ **※記述した場所は色々なメソッドを書いている部分です**
85
86
  ```java
87
+ @Override
88
+ public boolean onTouchEvent(Motion event){
89
+ }
90
+ ---省略(様々なメソッド)
91
+ public void activechange(){
86
92
  PercentFrameLayout percentFrameLayout;
87
93
  percentFrameLayout = (PercentFrameLayout)findViewById(R.id.pfl);
88
94
  percentFrameLayout.invalidate();
95
+ }
89
96
  ```
90
97
  しかし、以下のエラーが出ました。
91
98
  ```

2

タイトルと説明の改変

2017/04/19 13:15

投稿

ko20vonobird
ko20vonobird

スコア50

title CHANGED
@@ -1,1 +1,1 @@
1
- invalidate();で再描画されません
1
+ invalidate();で再描画されず、調べるとそれ自体が効いていないです
body CHANGED
@@ -1,5 +1,5 @@
1
1
  ###発生している問題
2
- invalidate();でonDraw();が再描画されな
2
+ invalidate();でonDraw();が再描画されなく、ログ出力調べたところinvalidate();が効いていないことが判明しました
3
3
 
4
4
  ###現在の状況
5
5
  xmlファイルとカスタムビュー(と思われるもの)を扱うファイル、そして操作するためのファイルがあります。xmlファイルでは、

1

追記を記述。

2017/04/19 12:00

投稿

ko20vonobird
ko20vonobird

スコア50

title CHANGED
File without changes
body CHANGED
@@ -78,4 +78,17 @@
78
78
  ```
79
79
  このようにカスタムビュー(と思われるもの)のファイルでは書いてあるのですが、コードに書いてあるようにログを入れて再描画されているか確認しました。すると、colchange()メソッドが呼び出されているのは確認できたのですが、onDraw()内のログが出力されていなかったためinvalidate();が効いていないことが分かりました。
80
80
 
81
- 説明が長くなりましたが対処方法を教えてください、お願いします。
81
+ 説明が長くなりましたが対処方法を教えてください、お願いします。
82
+
83
+ ###追記
84
+ 調べた中で、階層を成しているViewは上層のものをinvalidate();しないという記事を発見しました。なので、以下の記述を操作するメインのjavaファイルに加えました。
85
+ ```java
86
+ PercentFrameLayout percentFrameLayout;
87
+ percentFrameLayout = (PercentFrameLayout)findViewById(R.id.pfl);
88
+ percentFrameLayout.invalidate();
89
+ ```
90
+ しかし、以下のエラーが出ました。
91
+ ```
92
+ java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
93
+ ```
94
+ なぜなのかわかりません。