Android 来自电话联系人的列表视图

Android 来自电话联系人的列表视图,android,listview,Android,Listview,下面的应用程序应该创建一个简单的已保存联系人列表视图 它很复杂,但当在android studio的模拟器上试用时,该应用程序会一直停止 任何帮助都将不胜感激。提前谢谢 package com.example.list_app2; import android.database.Cursor; import android.provider.ContactsContract; import android.support.v4.app.LoaderManager; import android

下面的应用程序应该创建一个简单的已保存联系人列表视图

它很复杂,但当在android studio的模拟器上试用时,该应用程序会一直停止

任何帮助都将不胜感激。提前谢谢

package com.example.list_app2;

import android.database.Cursor;
import android.provider.ContactsContract;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor>{


    SimpleCursorAdapter mAdapter;
    ListView myList;
    static final String[] PROJECTION = new String[] {ContactsContract.Data._ID, ContactsContract.Data.DISPLAY_NAME};
    static final String SELECTION = "((" + ContactsContract.Data.DISPLAY_NAME + " NOTNULL) AND (" + ContactsContract.Data.DISPLAY_NAME + " != '' ))";



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

        myList = (ListView)findViewById(R.id.ContactList);

        String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME};
        int[] toViews = {android.R.id.text1};
        mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null, fromColumns, toViews, 0);
        myList.setAdapter(mAdapter);

        getLoaderManager().initLoader(0, null, (android.app.LoaderManager.LoaderCallbacks<Cursor>)this);

    }
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {

        mAdapter.swapCursor(data);
    }

    public void onLoaderReset(Loader<Cursor> loader) {

        mAdapter.swapCursor(null);
    }

    public Loader<Cursor> onCreateLoader(int id, Bundle args) {

        return new CursorLoader(this, ContactsContract.Data.CONTENT_URI,
                PROJECTION, SELECTION, null, null);
    }


}
package com.example.list_app2;
导入android.database.Cursor;
导入android.provider.contacts合同;
导入android.support.v4.app.LoaderManager;
导入android.support.v4.content.CursorLoader;
导入android.support.v4.content.Loader;
导入android.support.v4.widget.SimpleCursorAdapter;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.widget.ListView;
公共类MainActivity扩展AppCompatActivity实现LoaderManager.LoaderCallbacks{
简单的适应;
列表视图myList;
静态最终字符串[]投影=新字符串[]{ContactsContract.Data.\u ID,ContactsContract.Data.DISPLAY\u NAME};
静态最终字符串选择=“(“+ContactsContract.Data.DISPLAY_NAME+”不为空)和(“+ContactsContract.Data.DISPLAY_NAME+”!=”);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList=(ListView)findViewById(R.id.ContactList);
String[]fromColumns={ContactsContract.Data.DISPLAY\u NAME};
int[]toViews={android.R.id.text1};
mAdapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,null,fromColumns,toViews,0);
myList.setAdapter(mAdapter);
getLoaderManager().initLoader(0,null,(android.app.LoaderManager.LoaderCallbacks)this);
}
public void onLoadFinished(加载器、光标数据){
mAdapter.swapCursor(数据);
}
公共void onLoaderReset(加载器){
mAdapter.swapCursor(空);
}
公共加载器onCreateLoader(int-id,Bundle-args){
返回新的游标装入器(此,contacts contract.Data.CONTENT\u URI,
投影,选择,空,空);
}
}

您能向我们展示一下您的堆栈跟踪(例外情况除外)吗?请参阅答案#1