3

私のJavaスキルは強くありません。1、2 か月しかプログラミングしていないので、私の愚かさを許してください。

バンドル内のメソッド間で値を渡して、いくつかのゲーム設定を保存およびロードできるようにしようとしていますが、値が転送されていると思いますが、「作成時メソッド」から値を取得して私のプログラムの残りの部分。

ここでブール値を読み込んでまとめています(多くの部分や、できれば無関係なものを切り取りました):

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
vV = new VortexTouch(this);     
CONTEXT = this;
// LOAD DATA
SharedPreferences settings = getSharedPreferences("GAME_DATA",MODE_PRIVATE);
_dPad = settings.getBoolean("GamePad", true);

// PASS DATA
intent = new Intent();
intent.setClass(this,VortexRenderer.class);
intent.putExtra("my_data", true); // should be _dPad but put 'true' in there for now.
startActivity(intent);
// PASS DATA END      

setContentView(vV);
}

ブール値は、VortexRenderer クラスで受信されます。

public class VortexRenderer extends Activity implements GLSurfaceView.Renderer {

private static final String LOG_TAG = VortexRenderer.class.getSimpleName(); 
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); 

Bundle bundle = getIntent().getExtras();
_dPad = bundle.getBoolean("my_data");
_dPad = true; // testing to see if value carries, it doesn't :-( 

finish();
}

public boolean _dPad;

public void SomeGameAction(){
//try to do something with _dPad but it has not taken on a value of true. why? 
}

だから私は_dPadの値が1つのアクティビティから別のアクティビティに取得されていると思いますが、VortexRendererの「onCrate」メソッドから取得していません..明らかに私は何かを理解していません..誰か助けてもらえますか? ありがとう。

私のゲームは、この優れたチュートリアルを中心に構築されています (元のものがあまり残っていないというわけではありません): http://www.droidnova.com/android-3d-game-tutorial-part-i,312.html

あまり役に立ちませんが、興味がある場合は、これにコードを追加しようとしています: https://market.android.com/details?id=com.clockworkrobot.spacewarz

4

3 に答える 3

2

最初のアクティビティでは、代わりに

intent.putExtra("my_data", true);

使用する

Bundle bundle = new Bundle();
bundle.putBoolean("my_data", true);
intent.putExtra("android.intent.extra.INTENT", bundle);

次に、2番目のアクティビティでは、

Bundle bundle = getIntent().getExtras();

使用する

Bundle bundle = getIntent().getBundleExtra("android.intent.extra.INTENT");
于 2011-08-31T19:04:52.467 に答える
0

正直に言うと、あなたが本当にここで何をしようとしているのかわからない.

onCreate で finish を呼び出すと、アクティビティを開始するとすぐにアクティビティが終了します。

インテントでブール値を適切に渡したり受け取ったりしているように見えますが、_dPad を true にハードコーディングすると、インテントでそれを渡す必要が確実になくなるため、デバッグのためだけに願っています。

VortexRenderer アクティビティの全体的な目的は何ですか? 新しいアクティビティを作成せずに目標を達成するためのより良い方法があると思います.

Log.v(tag, message); の使用もお勧めします。utility と logcat を使用して、課題のデバッグに役立ててください。

コードのインデントは、コードの可読性にも最も確実に役立ちます。

于 2011-08-31T20:52:58.430 に答える
-1

毎回私にとって最善の方法は、Global Static クラスを使用して一時データを保持することです。セッターとゲッターを使用すると、はるかに簡単で理解しやすくなります。

于 2011-08-31T20:49:26.613 に答える