2011-10-24 9 views
0

私は2つのボタンを持つクラスを持っています。どちらがクリックされたかに応じて、別の値が次のインテントに送信されます。その意図は、バンドルで送信された値を処理する必要があります。Android特定のインテントから到着するとき

私が抱える問題は、その意図が私のホームページであり、他のクラスを介してアクセスできることです。これらが開こうとすると、バンドルの値が設定されません。

基本的に、ユーザーが特定の意図から来ているかどうかを確認し、それがあるかどうかによって異なるアクションを実行する必要があります。

私はこのコードを以下で使用しようとしましたが、私はJavaの専門家ではなく、これを実装する最良の方法を知らない。

ご迷惑をおかけして申し訳ありません。

String well =""; 
    Intent i = getIntent(); 
    Bundle bun = i.getExtras(); 
    String standard = "yes"; 
    if(bun.getString("WELL")==null){ well = "";} 
    else {well = bun.getString("WELL");} 
    if(well == standard){ 
     buttonLogin(context); 
    } 

私はこの問題は何も設定されていない場合、余分のないバンドルがないことであるライン

if(bun.getString("WELL")==null){ well = "";} 

答えて

0
String well =""; 
Bundle bun = getIntent().getExtras(); 
String standard = "yes"; 
if(bun != null){ 
    well = bun.getString("WELL"); 
    if(well == null) well = ""; 
    if(well == standard) buttonLogin(context); 
} 
0

にnullポインタ例外を取得しておきます。 getExtras()nullを返すか、WELLがバンドルに含まれているかどうかを確認する必要があります。

0
if(bun == null || !bun.containsKey("WELL")) 
    { well = "";} 
else 
    {well = bun.getString("WELL");} 

バンドルのcontainsKeyメソッドを使用すると、バンドルにキーがあるかどうかがチェックされます。私が正しくあなたが探しているもの、あなたを理解していれば

0

は、別のクラスの静的変数を実装します例:

public class Constant 
{ 
    public static Boolean IntentPassed = false; 
} 

と宛先クラスチェックで:

if(Constant.IntentPassed) // where constant is a class, IntentPassed is a static boolean variable 
    { 
     String well =""; 
     Intent i = getIntent(); 
     Bundle bun = i.getExtras(); 
     String standard = "yes"; 
     if(bun.getString("WELL")==null){ well = "";} 
     else {well = bun.getString("WELL");} 

     if(well == standard){ 
     buttonLogin(context); 
     } 
    } 
このような変数を定義
関連する問題