从联系人ListView获取电话号码和姓名

时间:2016-04-22 16:49:33

标签: java android listview android-studio

我正在尝试从联系人列表视图中获取电话号码和姓名。这就是我到目前为止所做的:

ListView lv;
Cursor cursor1;
Context context;
String phoneNumberStr;


@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.contacts_screen_x);

    context = this;

    cursor1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
    startManagingCursor(cursor1);




    String[] from = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};

    int[] to = {android.R.id.text1, android.R.id.text2};

    SimpleCursorAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor1, from, to);

    setListAdapter(listAdapter);

    lv = getListView();
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            int PhoneNumber = cursor1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
            phoneNumberStr = cursor1.getString(PhoneNumber);
            Intent SendText = new Intent(context, SendText.class);
            SendText.putExtra("PhoneNumber", phoneNumberStr);
            startActivity(SendText);
        }
    });

    lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}

这只是获取数字,但我也想得到这个名字。

这就是logcat所说的:

  

引起:java.lang.NullPointerException:尝试调用虚拟   方法'void android.widget.TextView.setText(java.lang.CharSequence)'   在null对象引用上                                                                                                   在   com.example.luke.percentagegradecalculator.SendText.onCreate(SendText.java:28)                                                                                                   在android.app.Activity.performCreate(Activity.java:6020)                                                                                                   在   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)                                                                                                   在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2259)                                                                                                   在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2368)                                                                                                   在android.app.ActivityThread.access $ 800(ActivityThread.java:149)                                                                                                   在   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1284)                                                                                                   在android.os.Handler.dispatchMessage(Handler.java:102)                                                                                                   在android.os.Looper.loop(Looper.java:135)                                                                                                   在android.app.ActivityThread.main(ActivityThread.java:5292)                                                                                                   at java.lang.reflect.Method.invoke(Native Method)                                                                                                   在java.lang.reflect.Method.invoke(Method.java:372)                                                                                                   在   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:908)                                                                                                   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)

我曾意图去另一个java类和布局并获取额外内容并将textview设置为PhoneNumberStr。我相信字符串是null。请帮帮我!

1 个答案:

答案 0 :(得分:0)

在android中intentactivity类是2个不同的东西,这就是错误......

Intent SendText = new Intent(context, SendText.class);

你正在构建一个具有你已经定义的意图本身的意图对象......这不会起作用......

您必须将其更改为

Intent myIntent = new Intent(context, SendTextActivity.class);

其中SendTextActivity.class是一个扩展android Activity class

的类
相关问题