0

1つのViewModelをインスタンス化して、すべてのアクティビティで使用しようとしています。アクティビティでViewModelをインスタンス化できません。

public class LaunchActivity extends Activity { 
    private Controller control; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_launch); 
     control = ViewModelProviders.of(this).get(Controller.class); 
    } 
} 

が、私はそれがof(this)を解決できないというcontrol = ViewModelProviders.of(this) <--でエラーが発生しましたが、実装のViewModelのAndroid開発者の例hereに基づきます。 ViewModelを拡張するクラスはアクティビティでインスタンス化できるはずです、そうですか?

私がやっていることが間違っている場合、私は自分のアクティビティ用にViewModelオブジェクトをインスタンス化する必要がありますか? ViewModelProviders.of()はフラグメントでのみ機能するので、フラグメント数を持つn個のアクティビティを作成する必要がありますか?

+1

AppCompatActivityを使用してみてください – Kuffs

答えて

2

あなたはsupport libraryアクティビティを利用する必要があります。

AppCompatActivityまたはFragmentActivity

1

Activityを延長しています。 ViewModelProvidersは、FragmentActivityとそれを継承するもの(AppCompatActivityなど)で動作します。また、バックポートFragmentandroid.support.v4.app.Fragment)で動作します。ネイティブActivityまたはFragmentクラスの公式サポートはありません。