按钮后崩溃点击:无法执行android的方法:onClick

时间:2018-01-27 18:35:58

标签: java android

我一直在寻找解决方案,但最终没有成功。本程序应该读取TextView中的内容(id = textField),然后它应该用Log.i显示文本

这是MainActivity.java

package quotebook.theoneandonly.com.buttons;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
public void clickfunction(View view) {
    EditText myTextField = ((EditText) findViewById(R.id.textField));
    Log.i("textField Value", myTextField.getText().toString());

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

这是我点击按钮后得到的错误信息:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: quotebook.theoneandonly.com.buttons, PID: 11117
              java.lang.IllegalStateException: Could not execute method for android:onClick
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                  at android.view.View.performClick(View.java:6294)
                  at android.view.View$PerformClick.run(View.java:24770)
                  at android.os.Handler.handleCallback(Handler.java:790)
                  at android.os.Handler.dispatchMessage(Handler.java:99)
                  at android.os.Looper.loop(Looper.java:164)
                  at android.app.ActivityThread.main(ActivityThread.java:6494)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
               Caused by: java.lang.reflect.InvocationTargetException
                  at java.lang.reflect.Method.invoke(Native Method)
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                  at android.view.View.performClick(View.java:6294) 
                  at android.view.View$PerformClick.run(View.java:24770) 
                  at android.os.Handler.handleCallback(Handler.java:790) 
                  at android.os.Handler.dispatchMessage(Handler.java:99) 
                  at android.os.Looper.loop(Looper.java:164) 
                  at android.app.ActivityThread.main(ActivityThread.java:6494) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
               Caused by: java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.EditText
                  at quotebook.theoneandonly.com.buttons.MainActivity.clickfunction(MainActivity.java:11)
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                  at android.view.View.performClick(View.java:6294) 
                  at android.view.View$PerformClick.run(View.java:24770) 
                  at android.os.Handler.handleCallback(Handler.java:790) 
                  at android.os.Handler.dispatchMessage(Handler.java:99) 
                  at android.os.Looper.loop(Looper.java:164) 
                  at android.app.ActivityThread.main(ActivityThread.java:6494) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

3 个答案:

答案 0 :(得分:0)

也许你正试图在这里施放错误的物体。它应该是TextView而不是EditView:

EditText myTextField = ((EditText) findViewById(R.id.textField));

应该是:

TextView myTextField = ((TextView) findViewById(R.id.textField));

在这种情况下,相关的错误消息是堆栈跟踪中的最后一个:

Caused by: java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.EditText

答案 1 :(得分:0)

'textField'是TextView的ID。您在EditText上使用它。 再次检查xml并在MainActivity中更改EditText的ID。

错误日志说,TextView无法强制转换为EditText。

抱歉,没有足够的信用评论。

答案 2 :(得分:0)

应该像>

  EditText myTextField = (EditText) findViewById(R.id.textField);

删除"()"在转换编辑文本和行结束之前......我认为所有问题都解决了!

相关问题