在创建对现有项目的XML进行更改时,我遇到了此错误。这就是我的XML看起来像
activity_month_view.xml
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.YearViewActivity">
<ImageView
android:id="@+id/month_view_prev_month"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_keyboard_arrow_left_black_24dp"
android:onClick="changeMonth"/>
</android.support.design.widget.CoordinatorLayout>
我的Java类
MonthViewActivity.java
public class MonthViewActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_month_view);
}
public void changeMonth(View view) {
//Some methods here
}
}
onClick
属性显示此错误
Corresponding method handler 'public void changeMonth(android.view.View)' not found
答案 0 :(得分:10)
我在声明XML中的上下文时犯了一个错误。我曾使用.activities.YearViewActivity
,但changeMonth
方法在另一个活动中声明,导致错误。
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.MonthViewActivity"> //Changed here
<ImageView
android:id="@+id/month_view_prev_month"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_keyboard_arrow_left_black_24dp"
android:onClick="changeMonth"/>
</android.support.design.widget.CoordinatorLayout>
将tools:context
更改为调用活动的类为我修复了错误。
答案 1 :(得分:1)
您可以尝试这个来解决问题
.MainActivity
<TextView
android:id="@+id/numbers"
style="@style/CategoryStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/category_numbers"
android:text="@string/category_numbers"
android:onClick="openNumberList"/>
Java代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void openNumberList(View view) {
Intent i = new Intent(this, NumberActivity.class);
startActivity(i);
}
}
在MainActivity中声明一个名为openNumberList
的方法。您无需在NumberActitvity
答案 2 :(得分:0)
好的,这是一个简单的陷阱 :D & 我是 Kotlin/AS 新手。
我们需要在另一个函数之外定义我们的方法。如下图
例如:
//另一个函数
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
//我的函数
fun show_toast_msg(view:View) {
Toast.makeText(getApplicationContext(), "Im focused.", Toast.LENGTH_SHORT).show();
}
哈哈太傻了,看看这是否有帮助