4

私のAndroidアプリケーションでは、すべてのアクティビティに共通の文字列値を使用する必要があります。「commonValue」は、すべてのアクティビティで使用する共通の文字列値です。このような主な活動の関連コード:

public class TestActivity extends Activity {

 public String commonValue;//THE COMMON STRING FOR ALL ACTIVITIES

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    commonValue = "DemoValue";
  }
}

次のアクティビティでは、「TestActivity」クラスのオブジェクトを作成し、「testValue」文字列を「str」という名前の別の文字列に割り当てようとしました。

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.testlist);

    TestActivity obj = new TestActivity();//OBJECT OF MAIN ACTIVITY
    String str = obj.commonValue;
 }

しかし、2番目のアクティビティの「str」値は、最初のアクティビティで割り当てられた値と等しくありません。それはなぜですか?どうすればこれを行うことができますか?

ありがとう!

4

8 に答える 8

4

あなたの価値をstring.xml

 <string name="common_value">DemoValue</string>

そして、このような活動で使用します。

String common_value = getApplicationContext().getString(R.string.common_value);
于 2012-06-15T07:06:22.590 に答える
3

アプリでSharedPreferencesの使用を開始します。

あなたの最初の活動であなたはします

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("commonValue", "DemoValue");
editor.commit();

2番目のアクティビティで

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String str = settings.getString("commonValue", null);
于 2012-06-15T07:03:03.113 に答える
1

値が常に同じである場合は、public static final変数を作成し、TestActivity.COMMON_VALUEを介してそれにアクセスできます。

アクティビティ間で値を渡したい場合は、インテントを使用して、渡したい値を追加する必要があります。

于 2012-06-15T07:05:40.157 に答える
1

これを試して -

TestActivity.java

public class TestActivity extends Activity {

 public static String commonValue;//THE COMMON STRING FOR ALL ACTIVITIES

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    commonValue = "DemoValue";
  }
}

別の活動

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.testlist);

    String str = TestActivity.commonValue;
}
于 2012-06-15T07:07:21.187 に答える
0

Sanaが提案したように、SharedPreferencesを使用します。

または、グローバル定数クラスを使用します。あなたが持っているものに固執したいなら、あなたは試すことができます: String str = TestActivity.this.commonValue;

既存のコードはアクティビティの新しいインスタンスを作成しているため、設定した値は含まれません。

于 2012-06-15T07:06:16.770 に答える
0

アクティビティ間でデータを渡すには、バンドルを使用します。と方法、

intent.putExtra()

データをアプリに対してグローバルに設定する場合は、アプリケーションクラスを作成し、そこにデータを保存します。

于 2012-06-15T07:06:24.703 に答える
0

アプリごとにアプリケーションファイルがあり、そこで変数を宣言できます。アプリケーションファイルは任意のアクティビティから取得できるため、パブリックゲッターセッターを使用して取得/設定できます。

developer.androidhttp : //developer.android.com/resources/faq/framework.htmlで言及されているように訴えることができるさまざまな他のmetjodがあり ます

Singleton class
A public static field/method
A HashMap of WeakReferences to Objects (almost same as my above solution )
Persistent Objects

それらも見てください

于 2012-06-15T07:06:27.613 に答える
0

commonValueがTestActivityonCreateメソッドで設定したものと等しくない理由は、その関数がまだ呼び出されていないためです。

これに対する解決策はすでに他の人によって言及されています。値をバンドルに入れるようなものです。

于 2012-06-15T07:06:51.390 に答える