2017-10-08 11 views
-1

getApp()メソッドがnullを返しています。どんな考え?Appオブジェクトを取得するとNULLが返されます

public class App extends Application { 

    private static App app; 

    private BoxStore boxStore; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     app = this; 

     boxStore = MyObjectBox.builder().androidContext(App.this).build(); 
     if(BuildConfig.DEBUG) 
     { 
      new AndroidObjectBrowser(boxStore).start(this); 
     } 

    } 

    public static App getApp() { 
     return app; 
    } 

    public BoxStore getBoxStore() { 
     return boxStore; 
    } 

} 

getApp()方法は、以下のような活動から呼び出されます。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    BoxStore boxStore = App.getApp().getBoxStore(); 
    Box<ListEntryObject> listEntryObjectBox = boxStore.boxFor(ListEntryObject.class); 

    sharedPreferences = getSharedPreferences("TYPE_OF_ACTION", Context.MODE_PRIVATE); 
    editor = sharedPreferences.edit(); 
    editor.putInt("sourceToDest", 0); 
    editor.apply(); 

    sharedPreferences = getSharedPreferences("POSITION" , Context.MODE_PRIVATE); 
    editor = sharedPreferences.edit(); 
    editor.putInt("position", 0); 
    editor.apply(); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      sharedPreferences = getSharedPreferences("TYPE_OF_ACTION", Context.MODE_PRIVATE); 
      editor = sharedPreferences.edit(); 

      editor.putInt("sourceToDest", 0); 
      editor.apply(); 

      fragmentManager = getSupportFragmentManager(); 
      entryDialogFragment = new EntryDialogFragment(); 

      entryDialogFragment.show(fragmentManager, "Sample Fragment"); 

     } 
    }); 

    entryObjectList = new ArrayList<>(); 

} 
+1

このgetAppメソッドを呼び出すコードを投稿してください –

+0

@AbdulWaheed私は編集しました。チェックしてください。 –

+0

マニフェストファイルにアプリケーションクラスを追加する必要があります。android:name アプリケーション用に実装されたアプリケーションサブクラスの完全修飾名。アプリケーション・プロセスが開始されると、このクラスはアプリケーションのコンポーネントの前にインスタンス化されます。 サブクラスはオプションです。ほとんどのアプリケーションでは必要ありません。サブクラスが存在しない場合、Androidは基本Applicationクラスのインスタンスを使用します。 – Hector

答えて

2

コード

の下で述べたようにたManifest.xmlでアプリケーションタグに、このクラス(アプリケーション)にリンクするようにしてください
<application 
android:name="package.MyClass" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme"> 
... 
</application> 

あなたに役立つこと

+0

ありがとうございました。私はこれを知らなかった。 –

+1

私は助けてくれてうれしいです。 upvoteと覚えていることを忘れないでください:) –

関連する問題