2

getIntent()。getStringExtra(name)関数から文字列の非静的データを収集するデータベースクラスをAndroidで構築しています。この値は、単純な文字列変数(Non-Static)に入れています。

静的文字列内で使用しようとすると、「非静的フィールドへの静的参照を作成できません」というエラーが発生します。

どうすればこれを解決できますか?これが私のコードです:

package ent.com;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;

public class SetSql extends Activity{

String saveExtra = getIntent().getStringExtra("save");

public static final String KEY_ROWID = "_id";
public static final String KEY_SAVE = "save_name";
public static final String KEY_STADUIM = "stadium_size";
public static final String KEY_FINANCE = "total_money";
public static final String KEY_PLAYERS = "players";

private static String DATABASE_NAME = "save" + saveExtra;
private static final String DATABASE_TABLE = "save_data";
private static final int DATABASE_VERSION = 1;

private static class DbHelper extends SQLiteOpenHelper{

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

}

}

助けてくれてありがとう:)

4

5 に答える 5

3

これを試して

String saveExtra = null; 
private static String DATABASE_NAME = "save" ;

OnCreateで

String saveExtra = getIntent().getStringExtra("save");
DATABASE_NAME += saveExtra;
于 2012-04-12T10:02:45.650 に答える
1

静的変数DATABASE_NAMEはSetSqlクラスがロードされるとすぐに初期化されますが、インスタンス変数saveExtraはインスタンスが作成されたときにのみ初期化されます。

DATABASE_NAMESetSqlクラスコンストラクターで値を設定できますが、インテントを受け取ったインスタンスだけでなく、SetSqlのすべてのインスタンスに影響を与えることに注意してください。

IMHO、最も簡単なオプションは、のDATABASE_NAMEようなインスタンス変数として設定することsaveExtraです。

于 2012-04-12T09:57:11.613 に答える
0

文字列にアクセスするための静的な「getDatabaseName」メソッドを作成してみてください。

于 2012-04-12T09:50:31.260 に答える
0

この行String saveExtra = getIntent().getStringExtra("save"); をアクティビティレベルから削除し、に書き込みますonCreate()

アクティビティレベルで変数saveExtraを宣言するだけです。

于 2012-04-12T09:57:22.940 に答える
0
private static String saveExtra =null;

onCreate

これを使って

saveExtra = getIntent().getStringExtra("save");
于 2012-04-12T09:57:51.767 に答える