大家好,我初学Android,对于单步调试遇到了个问题。
1.我新建了两个类,HellowrodActivity 和 ContactPick
2.单步调试时 HellowrodActivity 的断点能停下来, 不过ContactPick里的断点停不下来,创建与按钮点下都不好用。
3.关键代码如下:
   HellowrodActivity类
-------------------------------
package your.hello.namespace;import java.util.ArrayList;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.*;public class HellowrodActivity extends Activity {
    protected static final int PICK_CONTACT = 0; /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
         btnSend = (Button) findViewById(R.id.btnSend);
         btnContact = (Button) findViewById(R.id.btnContact);
         
         edtPhoneNo = (EditText) findViewById(R.id.edtPhoneNo);
         edtContent = (EditText) findViewById(R.id.edtContent);

         btnContact.setOnClickListener(new View.OnClickListener() {          public void onClick(View v) {
                 // TODO Auto-generated method stub
                 Intent intent = new Intent(Intent.ACTION_PICK,
                         ContactsContract.Contacts.CONTENT_URI);
                 startActivityForResult(intent, PICK_CONTACT);
             }
         });
         
        btnSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
String phoneNo = edtPhoneNo.getText().toString();
String message = edtContent.getText().toString();
}});

    }
private Button btnSend;
private Button btnContact;
private EditText edtPhoneNo;
private EditText edtContent;

public void onActivityResult(int reqCode, int resCode, Intent data) {     super.onActivityResult(reqCode, resCode, data);     switch (reqCode) {     case (PICK_CONTACT): {         if (resCode == Activity.RESULT_OK) {
            String name;                
            Uri contactData = data.getData();
            Cursor c = managedQuery(contactData, null, null, null, null);
            c.moveToFirst();
            name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            TextView tv;
            tv = (TextView)findViewById(R.id.edtPhoneNo);
            tv.setText(name);         }         break;     }     }
}
    
private void sendSMS(String phoneNumber,String message) {

// ---sends an SMS message to another device---
SmsManager sms = SmsManager.getDefault();
String SENT_SMS_ACTION = "SENT_SMS_ACTION";
String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";

Intent sentIntent = new Intent(SENT_SMS_ACTION);
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentIntent,
0);

Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);
PendingIntent deliverPI = PendingIntent.getBroadcast(this, 0,
deliverIntent, 0);

// register the Broadcast Receivers
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context _context, Intent _intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(),
"SMS sent success actions", Toast.LENGTH_SHORT)
.show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(),
"SMS generic failure actions", Toast.LENGTH_SHORT)
.show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast
.makeText(getBaseContext(),
"SMS radio off failure actions",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(),
"SMS null PDU failure actions", Toast.LENGTH_SHORT)
.show();
break;
}
}
}, new IntentFilter(SENT_SMS_ACTION));

registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context _context, Intent _intent) {
Toast.makeText(getBaseContext(), "SMS delivered actions",
Toast.LENGTH_SHORT).show();
}
}, new IntentFilter(DELIVERED_SMS_ACTION));

if (message.length() > 70) {
ArrayList<String> msgs = sms.divideMessage(message);
for (String msg : msgs) {
sms.sendTextMessage(phoneNumber, null, msg, sentPI, deliverPI);
}
} else {
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliverPI);
}
Toast.makeText(HellowrodActivity.this, "短信发送完成", Toast.LENGTH_LONG).show();
}
}
--------------------------------
ContactPick类
package your.hello.namespace;import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.AdapterView.OnItemClickListener;public class ContactPick extends Activity { /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        Intent orgIntent=getIntent();
        Uri queryUri=orgIntent.getData();        
        final Cursor c = managedQuery(queryUri,
                null,
                null,
                null,
                null);        String[] fromColumns=new String[]{ContactsContract.Contacts.DISPLAY_NAME};
        int[] toLayoutIDs = new int[] { R.id.itemTextView };
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                R.layout.listitemlayout, c, fromColumns, toLayoutIDs);
        ListView lv = (ListView) findViewById(R.id.contactListView);
        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int pos,
                    long id) {
                c.moveToPosition(pos);    
                int rowId = c.getInt(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
                Uri outURI = Uri.parse(ContactsContract.Contacts.CONTENT_URI.toString() + rowId);
                Intent outData = new Intent();
                outData.setData(outURI);
                setResult(Activity.RESULT_OK,outData);
                finish();
            }
        });
    }
}

解决方案 »

  1.   

    是不是一个ACTIVITY只能单个的调试呀?
      

  2.   


    不是吧,只要这些Activity之间存在联系,单步调试时可以设置多个断点的,
      

  3.   


    就是点击了那个按键后,应该会跳到 public void onItemClick(AdapterView<?> parent, View view, int pos,
      long id)函数里的断点的,结果没有跳过去。
      

  4.   

    您好,您说的 联系 是指什么方式的联系。 用startActivityForResult(intent, PICK_CONTACT);这个算吗?