にキャストすることはできません、私は新しいIntent
を呼びたいが、それは例外を示しています。android.support.v7.internal.view.menu.ActionMenuItemViewは自分のアプリケーションではandroid.widget.Button
れるjava.lang .ClassCastException:android.support.v7.internal.view.menu.ActionMenuItemViewをandroid.widget.Buttonにキャストすることはできません 私はインターネットで見つかったが、私の場合は正しいとは限りません。
HistoryFragment.java extends Fragment
での私の問題のスタートメニュー項目を呼び出す:
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.saveContact:
Button button2=(Button) getActivity().findViewById(R.id.saveContact);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(), AddContactActivity.class);
startActivity(intent);
}
});
とクラスを:AddContactActivity.java extends AppCompatActivity
は、すべての情報を挿入し、自分の携帯電話に連絡することを追加するために、すべてのコードが含まれています。あなたのonActionItemClicked()
で
public class AddContactActivity extends AppCompatActivity {
private EditText editTextName;
private EditText editTextNumber;
private Button addContactBtn;
private CircleImageView contactImage;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_contact);
editTextName = (EditText) findViewById(R.id.edtTxtName);
editTextNumber = (EditText) findViewById(R.id.edtTxtNumber);
addContactBtn = (Button) findViewById(R.id.addContactBtn);
contactImage = (CircleImageView) findViewById(R.id.contactImage);
final String nameStr = getIntent().getStringExtra("name");
final String numberStr = getIntent().getStringExtra("number");
final String idStr = getIntent().getStringExtra("id");
if(nameStr != null && numberStr != null && idStr != null) {
editTextName.setText(nameStr);
editTextNumber.setText(numberStr);
addContactBtn.setText("UPDATE");
Bitmap bitmap = getIntent().getParcelableExtra("image");
if(bitmap != null) {
contactImage.setImageBitmap(bitmap);
}
} else {
addContactBtn.setText("ADD");
}
addContactBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editTextName.getText().toString().trim();
String number = editTextNumber.getText().toString().trim();
if(nameStr == null || numberStr == null || idStr == null) {
if (insertContact(name, number) && !(name.isEmpty() || number.isEmpty())) {
Toast.makeText(getApplicationContext(), "Đã thêm liên lạc", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Lỗi không thể thêm liên lạc", Toast.LENGTH_LONG).show();
}
} else {
if(updateContact(idStr, name, number)) {
Toast.makeText(getApplicationContext(), "Cập nhật 1 liên lạc", Toast.LENGTH_LONG).show();
//snackBar(v, "Contact updated.");
} else {
Toast.makeText(getApplicationContext(), "Lỗi không thể cập nhật liên lạc", Toast.LENGTH_LONG).show();
}
}
editTextName.setText("");
editTextNumber.setText("");
}
});
}
// Insert contact
public boolean insertContact(String firstName, String mobileNumber) {
ContentResolver contentResolver = this.getContentResolver();
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, firstName).build());
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, mobileNumber)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE).build());
try {
contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
return false;
}
return true;
}
boolean updateContact(String id, String name, String number) {
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
ops.add(ContentProviderOperation
.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(ContactsContract.Data.CONTACT_ID + "=? AND " + ContactsContract.Data.MIMETYPE
+ "=?", new String[]{id, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE})
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
.build());
ops.add(ContentProviderOperation
.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(ContactsContract.Data.CONTACT_ID + "=? AND " + ContactsContract.Data.MIMETYPE
+ "=? AND " + ContactsContract.CommonDataKinds.Organization.TYPE + "=?"
, new String[]{id, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
, String.valueOf(ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)})
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, number)
.build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch(Exception e) {
e.printStackTrace();
return false;
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch(id) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}
これは異なるエラーです。マニフェストファイルに「AddContactActivity」を宣言しましたか? –
はい、私は 'AddContacActivity'を宣言しましたが、ボタンをクリックするとエラーが表示されます: 'アクティビティを開始できませんComponentInfo {kr.co.composer.callrecord/kr.co.composer.callrecord.page.AddContactActivity}:android.view。 InflateException:バイナリXMLファイル行#13:inflating class active.since93.contentproviderdemo.imageview.CircleImageView'です。私のクラス 'CircleImageView'は:http://pastebin.com/qyd6ERHR –
あなたの" AddContactActivity "レイアウトxmlには何らかのエラーがあります。それを修正してください。 –