1

LayoutEditorでエラーが発生します。

インスタンス化に失敗しました。... java.lang.NullPointerException

私のアプリでは、ApplicationContextをクラスに渡そうとしましたが、これらのエラーが発生し、理由がわかりません。これがMainActivtyです

 public class MainActivity extends Activity {

static Window   window;
static Context  context;
static Consts consts;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     window = this.getWindow();
     context = this.getApplicationContext();
     consts = new Consts();

    setContentView(R.layout.activity_lap_timer);

} 

そして、Constsクラスでは、静的変数を介してコンテキストを取得しようとします

private Context context = MainActivity.context;


public Consts() {

    DisplayMetrics metrics = this.context.getResources().getDisplayMetrics(); <-- here i have the error

すみません、これを忘れました

public static Consts getConsts() {
    if(_currentConsts==null)
        return new Consts();
    return _currentConsts;
}

これは非常に重要です。これを使用してコンストラクターを処理する方法(Constsクラスにあります)?

私に何ができる ?

4

3 に答える 3

2

以下のように、MainActivity コンテキストを Consts クラス コンストラクターに渡します。

consts = new Consts(MainActivity.this);

以下のように、Consts クラスのグローバル変数コンテキストにコンストラクター コンテキストを割り当てます。

Context ctx;
public Consts(Context ctx)
{
  this.ctx = ctx;
  DisplayMetrics metrics = ctx.getResources().getDisplayMetrics();

}
于 2012-12-11T12:03:57.213 に答える
0

あなたのようなものMainActivityを開始する必要がありますConsts

Consts consts = new Consts(this);

Constsクラスでは、コンストラクターは次のようになります。

public Consts(Context context)
于 2012-12-11T12:04:03.720 に答える
0

静的変数を使用することはお勧めできません。

Consts クラスにコンストラクターを作成することをお勧めします。

private Context context;


public Consts(Context ctx) {

    DisplayMetrics metrics = ctx.getResources().getDisplayMetrics();
}

そしてあなたの活動からそれを呼び出します:

consts = new Consts(this);
于 2012-12-11T12:04:51.260 に答える