0

アクティビティを開始するときに、クラスのオブジェクトにアクセスして、クラスのセットデータを呼び出すことができますか? 何かのようなもの

  Intent intent=new Intent (a.this, b.class);
  startActivity(intent);

これで、ヒープに b.class のオブジェクトが必要であることがわかりました。オブジェクトの onCreate が作成される前に、クラスにデータを渡したいと思います。これで、バンドルでも同じことができることがわかりましたが、バンドルを介してオブジェクトを渡すと見苦しくなります。b.class への参照がある場合、クラスのメソッドを呼び出すことができますか? 私は理にかなっていますか?これは可能ですか?

敬具、

4

3 に答える 3

0

「これは可能ですか?」- おそらくそうだ。両方のアクティビティが同じプロセスで「ライブ」である場合、A から B への参照を取得/保持し、任意のパブリック メソッドを呼び出したり、任意のパブリック変数に書き込むことができます。でも:

「私は理にかなっていますか?」- おそらく: いいえ。まず第一に、あるアクティビティから別のアクティビティへの参照を維持すると、メモリ フットプリントが必要以上に大きくなる可能性があります (おそらく、予想よりも大きくなります: アクティビティ B はおそらく B のレイアウトを膨張させるために使用されます。 Bはそこにとどまる)。また、アクティビティが A 以外のコンポーネントによって開始された場合はどうしますか? 必要なパブリックメソッド/変数を事前に呼び出すために、そのようなコンポーネントはすべて B への参照を持つ必要がありますか? とても素敵ではありません。

一般に、アクティビティのインターフェイスは、それを開始するために使用できるインテントの観点から説明する必要があります。これには、開始されるアクション、アクションを実行する必要があるデータ、およびアクティビティを設定するためのエクストラが含まれます。バンドルの使用方法を知っているとすでに述べたので(そして、他のかなり不完全な答えが簡単な例を示しています)、私はただ言うだけです:それを試してください。

于 2012-09-24T07:38:23.997 に答える
0

グローバル変数をキーワードで使用できますstatic。SampleClass などのクラスでオブジェクトを定義し、onCreate メソッドで変数 SampleClass.yourObject を呼び出します。

于 2012-09-24T08:11:46.377 に答える
0

これがマニフェストになり、このクラスを使用して値を設定し、プロジェクト Java クラスのいずれかで値を取得できます

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="package name"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/somee" android:label="@string/app_name" android:noHistory="true" android:name="MainApplication" >
        <activity android:name=".first Page" android:noHistory="true"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

次に、メインのアプリケーションで

public class MainApplication extends Application{

    private static MainApplication instance;
    private String _sUserId;


    @Override
    public void onCreate(){
        super.onCreate();
        instance=this;
    }

    public static Main Application getInstance(){
        return instance;
    }

    public void setUserId(String s){
        _sUserId=s;
    }

    public String getUserId(){
        return _sUserId;

}

そして、次のような任意のJavaファイルで値を取得および設定できます

   MainApplication o=((MainApplication)getApplicationContext());
        Integer UserID=o.getUserID();//you need to set user where you want to  to get the value of user id 
于 2012-09-24T07:26:22.797 に答える