Java onClick方法不存在
(!)Java onClick方法不存在,java,xml,android-studio,Java,Xml,Android Studio,(!)onClick方法不存在 未找到相应的方法处理程序“public void navigate(android.view.view)”。onClick属性值应为单击视图时要调用的该视图上下文中的方法的名称。此名称必须对应于只接受一个View类型参数的公共方法。必须是字符串值,使用“\;”转义unicode字符的“\n”或“\uxxx”等字符 * 你好,我是新来的,我只是在尝试Coursera上的课程,但它似乎已经过时了,而且有些东西并没有像它应该的那样正常工作。 我一直在尝试在论坛上搜索来寻
onClick
方法不存在
未找到相应的方法处理程序“public void navigate(android.view.view)”。onClick属性值应为单击视图时要调用的该视图上下文中的方法的名称。此名称必须对应于只接受一个View类型参数的公共方法。必须是字符串值,使用“\;”转义unicode字符的“\n”或“\uxxx”等字符
*
你好,我是新来的,我只是在尝试Coursera上的课程,但它似乎已经过时了,而且有些东西并没有像它应该的那样正常工作。
我一直在尝试在论坛上搜索来寻找答案,我也尝试了一些方法,但似乎我太迟钝了,还是个新手。
这可能与我的工具:上下文有关吗
这是我的xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context="MainActivity"
android:background="#ffffff">
<NumberPicker
android:id="@+id/numberPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK"
android:id="@+id/button"
android:layout_below="@+id/numberPicker"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:onClick="navigate"/>
<WebView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/webView"
android:layout_below="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.NumberPicker;
import android.view.View;
public class MainActivity extends AppCompatActivity {
NumberPicker possibilities;
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
possibilities = (NumberPicker) findViewById(R.id.numberPicker);
webView = (WebView) findViewById(R.id.webView);
String[] possibilitiesStrings = {
"Android",
"Checklist text-input fields",
"Coursera",
"Supelec",
};
possibilities.setDisplayedValues(possibilitiesStrings);
possibilities.setMinValue(0);
possibilities.setMaxValue(possibilitiesStrings.length - 1);
/**
* called when the OK button from activity_main.xml is clicked
* @param v the View which triggered the method call: the OK button
*/
public void navigate(View v) {
int choice = possibilities.getValue();
webView.setWebViewClient(new WebViewClient());
if (choice == 0)
webView.loadUrl("file:///android_asset/android.html");
else if (choice == 1)
webView.loadUrl("file:///android_asset/checklist.html");
else if (choice == 2)
webView.loadUrl("http:///www.coursera.org");
else if (choice == 3)
webView.loadUrl("file:///android_asset/supelec.html");
}
}
}
}
我分析了您的代码,看到您在
onCreate()方法中声明了navigate方法,这就是为什么您可以从xml中找到它
示例如何在xml中声明要使用的方法
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.NumberPicker;
import android.view.View;
public class MainActivity extends AppCompatActivity {
NumberPicker possibilities;
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
possibilities = (NumberPicker) findViewById(R.id.numberPicker);
webView = (WebView) findViewById(R.id.webView);
String[] possibilitiesStrings = {
"Android",
"Checklist text-input fields",
"Coursera",
"Supelec",
};
possibilities.setDisplayedValues(possibilitiesStrings);
possibilities.setMinValue(0);
possibilities.setMaxValue(possibilitiesStrings.length - 1);
}
/**
* called when the OK button from activity_main.xml is clicked
* @param v the View which triggered the method call: the OK button
*/
public void navigate(View v) {
int choice = possibilities.getValue();
webView.setWebViewClient(new WebViewClient());
if (choice == 0)
webView.loadUrl("file:///android_asset/android.html");
else if (choice == 1)
webView.loadUrl("file:///android_asset/checklist.html");
else if (choice == 2)
webView.loadUrl("http:///www.coursera.org");
else if (choice == 3)
webView.loadUrl("file:///android_asset/supelec.html");
}
}
哥们,这是一个很好的问题,特别是第一张海报上的问题。干得好!谢谢您的回答,但是用XML声明方法是什么意思呢?我该怎么做才能使导航和“视图v”正常工作?当它与我使用的代码完全相同时,你怎么能给我举个例子?