我遇到过我的应用程序在单击EditText标记时停止,该标记附加了调用新活动的OnClick方法。 这是布局:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/location"
android:onClick="LaunchMap"
android:hint="Vieta"
android:layout_below="@+id/end_date"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignLeft="@+id/end_date"
android:layout_alignStart="@+id/end_date"
android:focusable="false"
android:focusableInTouchMode="false"
android:editable="false"/>
然后在我的活动课程Main2Activity.java
public void LaunchMap(View view){
Intent intent = new Intent(Main2Activity.this, MapsActivity2.class);
startActivity(intent);
}
和logcat信息:
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: FATAL EXCEPTION: main
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: Process: com.example.rimvydas.projektas, PID: 14898
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: java.lang.IllegalStateException: Could not find a method LaunchMap(View) in the activity class android.support.v7.internal.widget.TintContextWrapper for onClick handler on view class android.support.v7.widget.AppCompatEditText with id 'location'
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.view.View$1.onClick(View.java:3844)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.view.View.performClick(View.java:4472)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:18779)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:808)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:103)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.os.Looper.loop(Looper.java:193)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5333)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: Caused by: java.lang.NoSuchMethodException: LaunchMap [class android.view.View]
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at java.lang.Class.getConstructorOrMethod(Class.java:472)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at java.lang.Class.getMethod(Class.java:864)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.view.View$1.onClick(View.java:3837)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.view.View.performClick(View.java:4472)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:18779)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:808)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:103)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.os.Looper.loop(Looper.java:193)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5333)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:515)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
05-15 22:47:51.400 14898-14898/com.example.rimvydas.projektas E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
奇怪的是..如果我把这个相同的OnClick方法LaunchMap
放在let say按钮上,它工作正常..那么如何在EditText字段上调用OnClick?
答案 0 :(得分:1)
在运行之前检查布局的xlm文本版本。我有一个类似的问题,Android Studio自动更改(我忽略的原因)onClick引用从“methodName”到“methodName(ActivityName),导致应用停止。
在您的情况下,例如,如果在MainActivity中定义了方法,它将从“LaunchMap”更改为“LaunchMap(MainActivity)”。
答案 1 :(得分:0)
这似乎是编译器错误,您的编译器无法将您的方法名称“LaunchMap”从XML文件链接到mainActivity。我建议你更改方法名称,保存项目,在XML文件中使用新名称并再次运行项目。 另一方面,您可以通过编程方式使用onClickListener:
location.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LunchMap();
}
});
如果要以编程方式进行编程,则应从方法LunchMap中删除输入参数View