-1

アクティビティ B を実際に開始せずに、アクティビティ A からアクティビティ B に値を渡したい (したがって、これは Intents と putExtra の使用を除外します)。アクティビティ B は開始される場合と開始されない場合がありますが、開始する場合は、アクティビティ A から渡された値を表示する必要があります。

高低を検索しましたが、この一見単純な質問に対する適切な解決策を見つけることができませんでした. どんな助けでも大歓迎です!

4

6 に答える 6

6

理屈に反することなので、解決策は見つかりません。アクティビティ B は、開始されていて表示されていなければ何もできません。アクティビティ B は、知らないうちにシステムによって既に破棄されている可能性さえあります。

アクティビティ B が読み取ることができるいくつかの変数を設定するために、多くのものを使用できます。たとえば、アプリケーション、XML のどこか、または任意のランダム クラスなどです。

それでも、アクティビティ B を開始するまで、これらのオプションのいずれかを実際に使用することはできません。可能になった場合、インテントで追加のデータを提供するのと実質的に同じになります。

于 2013-06-10T08:41:57.930 に答える
0

したがって、アクティビティの値を保持する必要があります。開始した場合は、それらの値を使用する必要があることを意味します。それ以外の場合は、それらの値を破棄します。このために、必要なデータ型の変数で別のクラスを使用でき、そのためのゲッターセッターを作成して使用できます。

クラスを活用する

public class GetSet {

    public GetSet() {
        super();
    }

    private static boolean passwordSet = false;

    public static boolean isPasswordSet() {
        return passwordSet;
    }

    public static void setPasswordSet(boolean passwordSet) {
        GetSet.passwordSet = passwordSet;
    }
}

GetSet.setPasswordSet(false); と を使用してこれにアクセスできますBoolean flag = GetSet.isPasswordSet();

于 2013-06-10T08:44:34.667 に答える
0

次のようなグローバル クラスを使用します。

public class AppConfig {

    Context context;
    public AppConfig(Context mxt) {

        context = mxt;
    }

    public static String filepath = null;

次に、アクティビティ A の前にonCreate():

AppConfig config;
Context context;

onCreate()メソッドにこれを入れます:

context = getApplicationContext();
config = new AppConfig(context);

そして、前の 2 番目のアクティビティBonCreate()で:

AppConfig config;
Context context;

そして、onCreate()メソッドにこれを入れます:

context = getApplicationContext();
config = new AppConfig(context);

そして、必要な場所に値を設定します。これがあなたを助けることを願っています。

于 2013-06-10T09:21:44.237 に答える
0

共有設定を使用できます。この 1 つのアクティビティを使用して、それに値を設定でき、他のアクティビティはそこから読み取ることができます。

于 2013-06-10T08:43:05.787 に答える