应用程序在传输数据android时崩溃

时间:2017-10-06 06:34:46

标签: java android

这是我的代码:

public class MainActivity extends AppCompatActivity {

    ListView listView ;

    ArrayList<String> StoreContacts, id;
    Bundle bundle;
    ArrayAdapter<String> arrayAdapter ;
    Cursor cursor;
    Intent intent;
    String name, phonenumber ;
    public  static final int RequestPermissionCode  = 1 ;

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

        listView = (ListView)findViewById(R.id.listview1);



        StoreContacts = new ArrayList<String>();

        id = new ArrayList<String>();

        EnableRuntimePermission();



                GetContactsIntoArrayList();

                arrayAdapter = new ArrayAdapter<String>(
                        MainActivity.this,
                        R.layout.contact_items_listview,
                        R.id.textView, StoreContacts
                );

                listView.setAdapter(arrayAdapter);




        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {



                bundle =new Bundle();

                /*SharedPreferences.Editor editor=getSharedPreferences("Suyash",MODE_PRIVATE).edit();

                editor.putString("ID",id.get(i));

                editor.apply();*/

                intent = new Intent(MainActivity.this, SingleContact.class);

                bundle.putString("ID",id.get(i));

                intent.putExtra("ID",id.get(i));

                startActivity(intent);

            }
        });

    }

    public void GetContactsIntoArrayList(){

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

        while (cursor.moveToNext()) {

            id.add(cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID)));;

            name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));

            phonenumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            StoreContacts.add(name + " "  + ":" + " " + phonenumber);
        }

        cursor.close();

    }

    public void EnableRuntimePermission(){

        if (ActivityCompat.shouldShowRequestPermissionRationale(
                MainActivity.this,
                Manifest.permission.READ_CONTACTS))
        {

            Toast.makeText(MainActivity.this,"CONTACTS permission allows us to Access CONTACTS app", Toast.LENGTH_LONG).show();

        } else {

            ActivityCompat.requestPermissions(MainActivity.this,new String[]{
                    Manifest.permission.READ_CONTACTS}, RequestPermissionCode);

        }
    }

    @Override
    public void onRequestPermissionsResult(int RC, String per[], int[] PResult) {

        switch (RC) {

            case RequestPermissionCode:

                if (PResult.length > 0 && PResult[0] == PackageManager.PERMISSION_GRANTED) {

                    Toast.makeText(MainActivity.this,"Permission Granted, Now your application can access CONTACTS.", Toast.LENGTH_LONG).show();

                } else {

                    Toast.makeText(MainActivity.this,"Permission Canceled, Now your application cannot access CONTACTS.", Toast.LENGTH_LONG).show();

                }
                break;
        }

    }
}

收到结束时:

public class SingleContact extends AppCompatActivity {

    Bundle bundle=getIntent().getExtras();

    //SharedPreferences preferences=getSharedPreferences("Suyash",MODE_PRIVATE);




    0String string = bundle.getString("ID",null);

    Button button;

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

        button= (Button) findViewById(R.id.button);

        //string= bundle.getString("ID");

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(SingleContact.this, string, Toast.LENGTH_SHORT).show();
            }
        });

    }
}

单击该项目时崩溃。 我也试过了sharedpreference,它做了同样的事情。即时通讯使用android studio 2.3.3。 有人建议我应该做什么。 请帮忙

2 个答案:

答案 0 :(得分:2)

你无法在onCreate()之前获得捆绑包。编写类似下面的代码,它将解决您的错误。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_single_contact);
    // Your bundle code.
    Bundle bundle=getIntent().getExtras();
    String string = bundle.getString("ID",null);
}

答案 1 :(得分:0)

SingleContact活动捆绑数据的初始化可能错误,您应该在 onCreate 方法内部进行初始化

  public class SingleContact extends AppCompatActivity {

    Bundle bundle;
    String string; 
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single_contact);
        bundle = getIntent().getExtras()
        button= (Button) findViewById(R.id.button);

        string= bundle.getString("ID");

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(SingleContact.this, string, Toast.LENGTH_SHORT).show();
            }
        });
    }
}