1

Android のほとんどのプログラマーは、インテントまたはブロードキャスト レシーバーを使用して、あるクラスから別のクラスに短いテキスト メッセージを送信していることに気付きました。

Activity や Service などの他のクラスを拡張しないユーティリティ クラスを使用している場合、このようにユーティリティ クラスの変数に直接アクセスしないのはなぜですか。

 UtilityClass utility = new UtilityClass();
 String gotIt = utility.theOtherVariable; // direct access to variable in other class

このようにして何か問題がありますか?インテントまたはブロードキャスト レシーバーを使用してユーティリティ クラスからアクティビティ クラスに小さなテキスト メッセージを送信するよりも、この方法を使用したいと思います。

編集

クラスのインスタンスに加えて、あるアクティビティから別のアクティビティに渡す変数を静的にすることもできます。どちらの場合でも、追加のインテントまたはブロードキャスト レシーバーを使用して、あるアクティビティから別のアクティビティに情報を渡す価値はありません。

4

3 に答える 3

1

はい、もちろんそれを使用できます。独自のデータ構造を使用することもお勧めですが、必要性とシナリオによって異なります。たとえば、GPS からデータを受信して​​いて、アプリ内の 5 ~ 6 か所でそのデータが必要な場合、1 つのクラスを設計し、GPS データをクラスの変数に格納して、必要な場所にアクセスするとします。方法

于 2013-02-04T05:38:20.490 に答える
0

はい、もちろん、パブリック クラスを作成し、where 変数と関数をパブリックとして保持して、今後のアクティビティで使用できるようにすることは良いことです。

インテントが好きな場所では、あるアクティビティから別のアクティビティにデータを切り替えるための優れた簡単な方法です。たとえば、次のアクティビティよりも変数を使用したくない場合は、便利です。Intent のより無力な使用は Return activity Result です。アクションを実行したいが、次のアクティビティに依存する場合のように、Intent はタスクを達成するための強力なツールとして使用されます。

Short and Sweet : 要件に応じて異なります。

于 2013-02-04T05:53:27.163 に答える
0

これを試して、

UtilityClass utility = new UtilityClass();

.Use Utilityclass オブジェクトで初期化された Utilityclass をActivity使用すると、utilityclass のすべての値が取得されます。

例、

public class UtilityClass{
public static string gotIt = "value";
}  

public class MainActivity extends Activity {
UtilityClass utility = new UtilityClass();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
       setContentView(R.layout.xml);
 String str =  utility.gotIt;
}
于 2013-02-04T05:53:49.003 に答える