应用程序在传输数据时崩溃 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,它做同样的事情。IM 使用 Android Studio 2.3.3。任何人都建议我应该做什么。请帮忙

在 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);
}

单一联系人活动中初始化捆绑数据可能是错误的,您应该在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();
            }
        });
    }
}

最新更新