2017-09-26 9 views
0

私はそうのようなカスタムJavaクラスWordPressRestApiHandler構築しようとしています:そのクラスでアクセス文字列リソースと共有好み

public class LoginActivity extends AppCompatActivity{ 
    ... 
    private final WordPressRestApiHandler wordPressRestApiHandler = new WordPressRestApiHandler(LoginActivity.this, service); 
    ... 

を私は、文字列リソースへのアクセス権を持っていると思います共有プリファレンス。だから私は入力としてLoginActivity.thisを使ったのです。これは私のカスタムクラスのコンストラクタです:

protected WordPressRestApiHandler(Context initiateContext, OAuth10aService initiateService) { 
    context = initiateContext; 
    service = initiateService; 

    int some = R.string.PREFERENCE_FILE_KEY; 
    String test = context.getString(some); 

    SharedPreferences sharedPref = context.getSharedPreferences(test,Context.MODE_PRIVATE); 
    ... 

私はいくつかの整数を取得することができていますし、その値が正しいですが、私は次の行に文字列リソースにアクセスすることはできませんよ。 logcatは私に語った:この中

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference 
at android.content.ContextWrapper.getResources(ContextWrapper.java:86) 
at android.view.ContextThemeWrapper.getResourcesInternal(ContextThemeWrapper.java:127) 
at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:121) 
at android.support.v7.app.AppCompatActivity.getResources(AppCompatActivity.java:549) 
at android.content.Context.getString(Context.java:476) 
at com.example.my_app.WordPressRestApiHandler.<init>(WordPressRestApiHandler.java:40) 
at com.example.my_app.LoginActivity.<init>(LoginActivity.java:35) 
at java.lang.Class.newInstance(Native Method) 
at android.app.Instrumentation.newActivity(Instrumentation.java:1078) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2557) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
at android.app.ActivityThread.-wrap12(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
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)   

は私のsharedPreferencesファイルの一意の識別子が含まれています変数testワークフロー。したがって、"com.example.PREFERENCE_FILE"のようになります。

は、これまでのところ私は、カスタムアクティビティAppためApp.getContext().getString()を呼び出したりthis上の取り扱い(タイプAppCombatActivityのため、オブジェクト)が、それらのどれも私のために働いていないように、いくつかの方法を試してみました。

+0

文字列リソーステストにアクセスできない場合はどうすればできますか?コードがコンパイルされないか、例外が発生するのでしょうか? PREFERENCE_FILE_KEYのstrings.xmlには何が入っていますか? –

+0

@ tim.paetzご返信ありがとうございます!私はあなたの質問に答えるために自分の投稿を更新しました。 –

答えて

0

onCreate()メソッドで変数wordPressRestApiHandlerを初期化する必要があります。

public class LoginActivity extends AppCompatActivity{ 
    ... 
    private WordPressRestApiHandler wordPressRestApiHandler; 
    ... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     wordPressRestApiHandler = new WordPressRestApiHandler(LoginActivity.this, service); 
    } 
} 
+0

ありがとう!私はそれについて考えなかっただろう... –

関連する問題