2015-07-06 3 views
-3

Я пытаюсь получить String app_name из ресурсов, но я продолжаю получать ссылку на нулевой объект. Как я могу это исправить?Android Как я могу получить доступ к ресурсам в классе?

package com.testandroid; 

import android.app.Activity; 
import android.content.Context; 
import android.util.Log; 
import java.util.HashMap; 


public class Test extends Activity { 
    public Test() { 
     try { 
      String hello = getString(R.string.app_name); 

     } catch (Exception e) { 
      Log.d("myLogs", e.getMessage()); 
     } 
     } 
} 


<resources> 
    <string name = "app_name">Name</string> 
</resources> 
+0

Укажите, какой код находится в функции getString и что находится в вашем файле ресурсов. –

ответ

-1

Хорошо, самый простой способ заключается в использовании контекста.

public class Test extends Activity { 
    public Test(Context context) { 
     try { 
      String hello = context.getResources().getString(R.string.app_name) 

     } catch (Exception e) { 
      Log.d("myLogs", e.getMessage()); 
     } 
     } 
} 
2
string hello = getResources().getString(R.string.app_name); 
+0

И это все еще не работает для меня. –

0

Никогда, никогда не переопределить конструктор активность, это может привести к серьезным проблемам. Если вам нужно инициализировать что-то при построении активности, сделайте это в onCreate, в ресурсах конструктора НЕ готовы к использованию, поэтому вы не можете их использовать в это время.

0
public class Test extends Activity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_layout_here); 
     String hello = getString(R.string.app_name); 
     Log.d("Log", hello); 

} 

Кроме того, это должно быть помещено в strings.xml в values папку

<resources> 
    <string name = "app_name">Name</string> 
</resources> 
Смежные вопросы