2

前もって感謝します。印刷するときLog.d("me",getIntent().toString());

私は得ています:

Intent { act=android.intent.action.CALL_PRIVILEGED dat=tel:888 flg=0x13800000 cmp=com.ninetology.freecall.two/.CallFinalActivity }

「dat」に関連付けられている値をフェッチしようとしていますが、NullPointer 例外が発生しています。

//the code I am using is
getIntent().getStringExtra("dat"); // no use
//i tried 
getIntent().getExtras("dat").toString(); // NullPointer exception

上記のコードのキーとして「tel」を試してみましたが、まだ使用できません。

4

4 に答える 4

4

あなたはこれを間違っているようです。

  1. このgetExtras()関数は、特定の文字列を返す関数ではなく、データを抽出できるバンドルを返します。

  2. dat印刷されたデータからわかるように、は文字列値ではありません。それはUri

必要に応じて解析してみてください。データを取得できると確信しています。

public void onCreate(Bundle b) { //mistyped
    super.onCreate(b);
    Uri data = getIntent().getData();
    // OR USE THIS
    String data = getIntent().getDataString();
    // DO STUFF
}
于 2012-07-05T07:03:34.533 に答える
1

まず第一に、ログに入っているインテントからの文字列に値を持つオブジェクトがある必要はありません..

したがって、次のように、nullではないことを確認することをお勧めします。

Bundle bundle = getIntent().getExtras();

if(bundle ! = null)
{
  // Now check you bundle object which has a values or not  
}
else
{
  // 1. get data in form of Uri
  Uri data = getIntent().getData();

  // 2. OR get string of Uri
  String dataString = getIntent().getDataString();

  // 3. Or split the data string

  // The logic from this part may be different on your requirement.. I only suggests you to get data from string.. (Actual logic may different on your case)
  String data = getIntent().toString();
  data = data.subString(data.indexOf(":"), data.indexOf("flg")-1);
  Log.e("tel:", data);
}
于 2012-07-05T07:02:39.247 に答える
0

試すgetIntent().getExtras().get("dat");

于 2012-07-05T07:04:14.050 に答える
0

意図を持ってデータを渡したい場合は、アクティビティを開始する前に以下のコードを追加してください

intent.putExtra("dat", value); //value=送信したい値

別のアクティビティで同じ値を取得したい場合は、次のようにします。

Bundle bundle=getIntent().getExtras();
if(bundle!=null){
      String string=bundle.getString("dat");
       }

これを行うことで、null ポインター例外が発生しなくなり、役に立ちます。

于 2012-07-05T07:15:32.123 に答える