[英]Not sure how to understand what logcat is telling me is wrong
This is the error my logcat is giving me. 这是我的logcat给我的错误。 I understand it has something to do with my editText but i am not sure what.I am hopeing its a dumb mistake that can be fixed quickly and easily so i can keep working ASAP. 我知道它与我的editText有关,但我不确定是什么。我希望它是一个愚蠢的错误,可以快速,轻松地修复它,以便我能够尽快工作。 Help me if you can Stackoverflow Thanks! 如果可以的话请帮助我Stackoverflow谢谢!
The error only occurs when program is ran 该错误仅在程序运行时发生
02-25 16:30:19.417: E/AndroidRuntime(15259): FATAL EXCEPTION: main
02-25 16:30:19.417: E/AndroidRuntime(15259): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Wicker/com.Wicker.InviteSMS}: java.lang.ClassCastException: android.widget.EditText
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816)
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837)
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.app.ActivityThread.access$1500(ActivityThread.java:132)
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033)
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.os.Handler.dispatchMessage(Handler.java:99)
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.os.Looper.loop(Looper.java:143)
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.app.ActivityThread.main(ActivityThread.java:4196)
02-25 16:30:19.417: E/AndroidRuntime(15259): at java.lang.reflect.Method.invokeNative(Native Method)
02-25 16:30:19.417: E/AndroidRuntime(15259): at java.lang.reflect.Method.invoke(Method.java:507)
02-25 16:30:19.417: E/AndroidRuntime(15259): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-25 16:30:19.417: E/AndroidRuntime(15259): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-25 16:30:19.417: E/AndroidRuntime(15259): at dalvik.system.NativeStart.main(Native Method)
02-25 16:30:19.417: E/AndroidRuntime(15259): Caused by: java.lang.ClassCastException: android.widget.EditText
02-25 16:30:19.417: E/AndroidRuntime(15259): at com.Wicker.InviteSMS.onCreate(InviteSMS.java:48)
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
02-25 16:30:19.417: E/AndroidRuntime(15259): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780)
02-25 16:30:19.417: E/AndroidRuntime(15259): ... 11 more
This is my xml file: 这是我的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/contacts"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:gravity="center"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:text="@string/contacts"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#fff" /> <!-- android:background="@drawable/header" for header background -->
<Button
android:id="@+id/contactsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="@string/contacts" />
</RelativeLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/enter_contact"
android:textAppearance="?android:attr/textAppearanceMedium" />
<AutoCompleteTextView
android:id="@+id/contactnumber"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/to" >
<requestFocus />
</AutoCompleteTextView>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/message_to_send"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/invite_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/message_join" />
<Button
android:id="@+id/sendtxt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="doLaunchContactPicker"
android:text="@string/send_txt" />
</LinearLayout>
</ScrollView>
This is the class that runs it. 这是运行它的类。
public class InviteSMS extends Activity {
private static final int CONTACT_PICKER_RESULT = 1001;
private static final String DEBUG_TAG = null;
private SimpleAdapter mAdapter;
Button btnSendSMS;
AutoCompleteTextView txtPhoneNo;
Button Attachment;
Button contactsbutton;
Button gallery;
EditText txtMessage;
Context context = this;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.invite_text);
btnSendSMS = (Button) findViewById(R.id.sendtxt);
txtPhoneNo = (AutoCompleteTextView) findViewById(R.id.contactnumber);
txtMessage = (EditText) findViewById(R.id.invite_text);
contactsbutton = (Button) findViewById(R.id.contactsButton);
txtPhoneNo.setAdapter(mAdapter);
btnSendSMS.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String phoneNo = txtPhoneNo.getText().toString();
String message = txtMessage.getText().toString();
if (phoneNo.length() > 0 && message.length() > 0)
sendSMS(phoneNo, message);
else
Toast.makeText(getBaseContext(),
"Please enter both phone number and message.",
Toast.LENGTH_SHORT).show();
}
});
contactsbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent,
CONTACT_PICKER_RESULT);
}
});
}
private void sendSMS(String phoneNumber, String message) {
PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this,
InviteSMS.class), 0);
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
// ---when the SMS has been delivered---
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS delivered",
Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED));
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case CONTACT_PICKER_RESULT:
Cursor cursor = null;
String phone = "";
try {
Bundle extras = data.getExtras();
Set<String> keys = extras.keySet();
Iterator<String> iterate = keys.iterator();
while (iterate.hasNext()) {
String key = iterate.next();
Log.v(DEBUG_TAG, key + "[" + extras.get(key) + "]");
}
Uri result = data.getData();
Log.v(DEBUG_TAG,
"Got a contact result: " + result.toString());
// get the contact id from the Uri
String id = result.getLastPathSegment();
cursor = getContentResolver().query(Phone.CONTENT_URI,
null, Phone.CONTACT_ID + "=?", new String[] { id },
null);
int phoneIdx = cursor.getColumnIndex(Phone.DATA);
if (cursor.moveToFirst()) {
phone = cursor.getString(phoneIdx);
Log.v(DEBUG_TAG, "Got Contact: " + phone);
} else {
Log.w(DEBUG_TAG, "No results");
}
} catch (Exception e) {
Log.e(DEBUG_TAG, "Failed to get phone data", e);
} finally {
if (cursor != null) {
cursor.close();
}
EditText phoneEntry = (EditText) findViewById(R.id.invite_text);
phoneEntry.setText(phone);
if (phone.length() == 0) {
Toast.makeText(this,
"No Phone Number found for contact.",
Toast.LENGTH_LONG).show();
}
}
break;
}
} else {
Log.w(DEBUG_TAG, "Warning: activity result not ok");
}
}
}
You get a ClassCastException
at this line: 您在此行获得ClassCastException
:
txtMessage = (EditText) findViewById(R.id.invite_text);
That means the View
object with the id R.id.invite_text
is not EditText
. 这意味着ID为R.id.invite_text
的View
对象不是EditText
。 However this is not true since invite_text
is indeed of type EditText
. 但是,这不是正确的,因为invite_text
的类型确实是EditText
。
<EditText
android:id="@+id/invite_text"
android:layout_width="fill_parent"
...
" />
So I think your resource file is not up to date. 因此,我认为您的资源文件不是最新的。 The code looks all right. 该代码看起来还不错。 Delete your gen
folder and run it again. 删除您的gen
文件夹,然后再次运行。 Your resource file should be recreated when you delete gen
folder. 删除gen
文件夹时,应重新创建资源文件。
单击Project
菜单,然后选择Clean...
选择您的项目,然后单击确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.