0

あるアクティビティから別のアクティビティに値を送信したいのですが、null ポインター例外が発生しました。問題を解決してください。最初のアクティビティには SMS が含まれています。その
SMS の詳細は、これらの値に基づいて 2 番目のアクティビティに送信されます。 SMSに返信します。

public void onReceive( Context context, Intent intent ) 
    {
        // Get SMS map from Intent
        Bundle bundle = null;
        Bundle extras = intent.getExtras();

        String messages = "";
        String address = null,body=null;

        if ( extras != null )
        {
            // Get received SMS array
            Object[] smsExtra = (Object[]) extras.get( "pdus" );

            // Get ContentResolver object for pushing encrypted SMS to incoming folder
            //ContentResolver contentResolver = context.getContentResolver();

            for ( int i = 0; i < smsExtra.length; ++i )
            {
                SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);

                body = sms.getMessageBody().toString();
               address = sms.getOriginatingAddress();

                messages += "SMS from " + address + " :\n";                    
                messages += body + "\n";

                // Here you can add any your code to work with incoming SMS
                // I added encrypting of all received SMS 


            }

            // Display SMS message
            Toast.makeText( context, messages, Toast.LENGTH_SHORT ).show();
            Intent i=new Intent(context,AlertActivity.class);

           bundle.putString("from",address);
            bundle.putString("msg",body);
            i.putExtras(bundle);

            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);

        }

}

アクティビティ 2:

  Intent i=getIntent();
    Bundle bundle=i.getExtras();
    String fromAdd=bundle.getString("from");
    String msgBody=bundle.getString("body");
4

6 に答える 6

1

これを変える

String msgBody=bundle.getString("body");

String msgBody=bundle.getString("msg");
于 2012-04-07T05:47:42.350 に答える
1

これを試して:

@Override  
 public void onCreate(Bundle savedInstanceState) {  
 super.onCreate(savedInstanceState);  
 setContentView(R.layout.main);    
 Bundle bundle = this.getIntent().getExtras();   
if (bundle != null)
{       
 String fromAdd = bundle.getString("from");  
 String msgBody = bundle.getString("body");   
}         
}
于 2012-04-07T05:48:08.170 に答える
1

Androidバンドルでは、キーと値のペアを配置します。データを配置するバンドルからデータを取得するときに、同じキーを渡す必要があります。「from」と「msg」の2つの文字列をインテントに配置しているコードを確認し、キーによってインテントから値を取得しています:「from」と「body」

したがって、開始アクティビティまたはアクティビティ2のいずれかで変更して、キー値が一致するようにします。

于 2012-04-07T05:53:22.947 に答える
0

この方法で試してください..

バンドル bu=getIntent().getExtras();

String title=bu.get("from").toString();

文字列 msg=bu.get("body").toString();

于 2012-04-07T07:45:53.473 に答える
0

これを試して.....

Activity1.java

Intent intent = new Intent(getApplication(),Activity2.class);
intent.putExtra("from",from);
intent.putExtra("Body",Body);
StartActivity(intent);

Activity2.java

Intent intent = getintent();
Bundle bundle=intent.getExtras();
String Body=bundle.getString("Body");
String From=bundle.getString("From");
setResult("RESULT_OK",intent);
于 2012-04-07T06:09:18.787 に答える
0

これを試してみてください.....Activity1からActivity2に値を渡します。

    Intent myIntent = new Intent(Activity1.this, Activity2.class);
           myIntent.putExtra("UserId",UserId);
           myIntent.putExtra("UserName",UserName);
           myIntent.putExtra("CompanyID",CompanyID);
           myIntent.putExtra("CompanyName",CompanyName);
           myIntent.putExtra("ProjectId",ProjectId);
           startActivity(myIntent);  

また、使用できる値を抽出できます

    Intent intent = getIntent();
    UserId=intent.getStringExtra("UserId");
    UserName=intent.getStringExtra("UserName");
    CompanyID=intent.getStringExtra("CompanyID");
    CompanyName=intent.getStringExtra("CompanyName");
于 2012-04-09T06:18:10.927 に答える