Java 应用程序在传输数据时崩溃
这是我的代码:Java 应用程序在传输数据时崩溃,java,android,Java,Android,这是我的代码: public class MainActivity extends AppCompatActivity { ListView listView ; ArrayList<String> StoreContacts, id; Bundle bundle; ArrayAdapter<String> arrayAdapter ; Cursor cursor; Intent intent; String n
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;
}
}
}
当我单击该项目时,系统崩溃。
我也尝试了SharedReference
,它也做了同样的事情。我正在使用android studio 2.3.3。
有人建议我做什么吗。
请帮助在SingleContact Activity中初始化bundle数据可能有误,您应该在创建方法的内部初始化
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();
}
});
}
}
在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);
}
你能分享一下你的崩溃吗report@SuyashShrivastava在onCreate()之前,您无法获取捆绑包。请将捆绑包代码放入onCreate(){bundle bundle=getIntent().getExtras();String String=bundle.getString(“ID”,null);}好的,让我试试。@Suyashhrivastava欢迎您,先生。您可以接受答案,以便管理员可以关闭此问题。
@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);
}