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

回答編集履歴

5

説明修正

2021/11/23 02:23

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -83,4 +83,4 @@
83
83
  }
84
84
  }
85
85
  ```
86
- フラグメントのレイアウトやアニメーションリソースはご質問のそのままを使わせて頂きました。(Image は画像リソースがありませんので消しました。)
86
+ フラグメントのレイアウトやアニメーションリソースはご質問のそのままを使わせて頂きました。(ImageView は画像リソースがありませんので消しました。)

4

テストコード追加

2021/11/23 02:23

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -7,4 +7,80 @@
7
7
  [AnimatorInflater.loadAnimator](https://developer.android.com/reference/android/animation/AnimatorInflater#loadAnimator(android.content.Context,%20int)) の第一パラメータは Context ですので、Activity 上では this が "Context を継承している" 自身を指しますのでエラーにはなりませんが、 Fragment 上では "Context を継承していない" 自身を指しますのでエラーになったものと思います。
8
8
  ですので、 onCreateView にコードを移しても同じことです。
9
9
 
10
- Fragment には getContext() もありますが、 onViewCreated() 内であれば requireContext() で良いように思います。( 試していませんがどちらを使っても onCreateView() 内では動作しないかもしれません。)
10
+ Fragment には getContext() もありますが、 onViewCreated() 内であれば requireContext() で良いように思います。( 試していませんがどちらを使っても onCreateView() 内では動作しないかもしれません。)
11
+
12
+ ----
13
+
14
+ アニメーションテストに使用したコードです。(ほぼそのままですが^^; )
15
+
16
+ MainActivity.java
17
+ ```java
18
+ package com.teratail.q370355;
19
+
20
+ import androidx.appcompat.app.AppCompatActivity;
21
+
22
+ import android.os.Bundle;
23
+
24
+ public class MainActivity extends AppCompatActivity {
25
+
26
+ @Override
27
+ protected void onCreate(Bundle savedInstanceState) {
28
+ super.onCreate(savedInstanceState);
29
+ setContentView(R.layout.activity_main);
30
+
31
+ getSupportFragmentManager().beginTransaction()
32
+ .replace(R.id.fragment_container, new MainFragment())
33
+ .commit();
34
+ }
35
+ }
36
+ ```
37
+ レイアウト: activity_main.xml
38
+ ```xml
39
+ <?xml version="1.0" encoding="utf-8"?>
40
+ <androidx.constraintlayout.widget.ConstraintLayout
41
+ xmlns:android="http://schemas.android.com/apk/res/android"
42
+ xmlns:tools="http://schemas.android.com/tools"
43
+ android:layout_width="match_parent"
44
+ android:layout_height="match_parent"
45
+ android:id="@+id/fragment_container"
46
+ tools:context=".MainActivity">
47
+
48
+ </androidx.constraintlayout.widget.ConstraintLayout>
49
+ ```
50
+ MainFragment.java
51
+ ```java
52
+ package com.teratail.q370355;
53
+
54
+ import android.animation.AnimatorInflater;
55
+ import android.animation.AnimatorSet;
56
+ import android.os.Bundle;
57
+ import android.view.*;
58
+ import android.widget.TextView;
59
+
60
+ import androidx.annotation.*;
61
+ import androidx.fragment.app.Fragment;
62
+
63
+ public class MainFragment extends Fragment {
64
+ private AnimatorSet animator1;
65
+ private TextView frma_tv1;
66
+
67
+ @Override
68
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
69
+ return inflater.inflate(R.layout.fragment_main, container, false);
70
+ }
71
+
72
+ @Override
73
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
74
+ super.onViewCreated(view, savedInstanceState);
75
+
76
+ //MainViewModel vm = new ViewModelProvider(requireActivity()).get(MainViewModel.class);
77
+
78
+ frma_tv1 = view.findViewById(R.id.frma_tv1);
79
+
80
+ animator1=(AnimatorSet)AnimatorInflater.loadAnimator(requireContext(),R.animator.animator1);
81
+ animator1.setTarget(frma_tv1);
82
+ animator1.start();
83
+ }
84
+ }
85
+ ```
86
+ フラグメントのレイアウトやアニメーションリソースはご質問のそのままを使わせて頂きました。(Image は画像リソースがありませんので消しました。)

3

脱字(?)

2021/11/23 02:22

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -7,4 +7,4 @@
7
7
  [AnimatorInflater.loadAnimator](https://developer.android.com/reference/android/animation/AnimatorInflater#loadAnimator(android.content.Context,%20int)) の第一パラメータは Context ですので、Activity 上では this が "Context を継承している" 自身を指しますのでエラーにはなりませんが、 Fragment 上では "Context を継承していない" 自身を指しますのでエラーになったものと思います。
8
8
  ですので、 onCreateView にコードを移しても同じことです。
9
9
 
10
- Fragment には getContext() もありますが、 onViewCreated() 内であれば requireContext で良いように思います。( 試していませんがどちらを使っても onCreateView() 内では動作しないかもしれません。)
10
+ Fragment には getContext() もありますが、 onViewCreated() 内であれば requireContext() で良いように思います。( 試していませんがどちらを使っても onCreateView() 内では動作しないかもしれません。)

2

追加

2021/11/21 10:53

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  そこで「よく分からない」とテキトウに弄っては、プログラミングとして間違っています。
4
4
  「なぜ」エラーなのかを突き詰めて原因を特定したうえで、対策しなければなりません。
5
+ ですので、ご質問の際には単に「エラーです」では無く、 **エラーとして表示されているメッセージを一緒にご提示頂けますよう** お願いします。
5
6
 
6
7
  [AnimatorInflater.loadAnimator](https://developer.android.com/reference/android/animation/AnimatorInflater#loadAnimator(android.content.Context,%20int)) の第一パラメータは Context ですので、Activity 上では this が "Context を継承している" 自身を指しますのでエラーにはなりませんが、 Fragment 上では "Context を継承していない" 自身を指しますのでエラーになったものと思います。
7
8
  ですので、 onCreateView にコードを移しても同じことです。

1

表現変更

2021/11/21 10:51

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  そこで「よく分からない」とテキトウに弄っては、プログラミングとして間違っています。
4
4
  「なぜ」エラーなのかを突き詰めて原因を特定したうえで、対策しなければなりません。
5
5
 
6
- [AnimatorInflater.loadAnimator](https://developer.android.com/reference/android/animation/AnimatorInflater#loadAnimator(android.content.Context,%20int)) の第一パラメータは Context ですので、Activity 上では this が (Context を継承している ) 自身を指しますのでエラーにはなりませんが、 Fragment 上では (Context を継承していない ) 自身を指しますのでエラーになったものと思います。
6
+ [AnimatorInflater.loadAnimator](https://developer.android.com/reference/android/animation/AnimatorInflater#loadAnimator(android.content.Context,%20int)) の第一パラメータは Context ですので、Activity 上では this が "Context を継承している" 自身を指しますのでエラーにはなりませんが、 Fragment 上では "Context を継承していない" 自身を指しますのでエラーになったものと思います。
7
7
  ですので、 onCreateView にコードを移しても同じことです。
8
8
 
9
9
  Fragment には getContext() もありますが、 onViewCreated() 内であれば requireContext で良いように思います。( 試していませんがどちらを使っても onCreateView() 内では動作しないかもしれません。)