1

連絡先番号のメインアクティビティから結果を取得するために、他のアクティビティに電話をかけようとしています。onActivityresultが値をcontactNoに割り当てたら、SMSメッセージを送信します。

ただし、私の問題は、onActivityResultが完了する直前にgetContactselect()メソッドが呼び出された後のsmsmanagerコードです。このため、連絡先番号はnullとして割り当てられます。

Main Activity code:

public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
Object o = lv1.getItemAtPosition(position);
ItemDetails obj_itemDetails = (ItemDetails)o;

...
...                                     
**getContactselect();**
**smsManager.sendTextMessage(contactNo, null, obj_itemDetails.getMessage(), null, null);**
}
...

public void getContactselect() {        
Intent ourIntent = new Intent(BreakOut.this,ContactsSelector.class);    
startActivityForResult(ourIntent,CONTACT_SELECT);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data){
        switch(requestCode) {
        case CONTACT_SELECT: 
             if (resultCode == RESULT_OK) {
                 contactNo = data.getStringExtra("ContactDetails");
                 Toast.makeText(this, "You have chosen the contact: " + " " + contactNo, Toast.LENGTH_LONG).show();
                 break;     
             }
        }

}  
4

1 に答える 1

7

インテントは非同期で開始されます。これが、onActivityResult()メソッドがある理由です。あなたが呼び出したアクティビティが返された後に実行したいことは何でも、そこで実行する必要があります。

于 2013-01-22T19:34:46.700 に答える