有一个奇怪的事件。我有两个手机4.1.2和2.3.6 Android版本,4.1.2工作正常,但较旧的一个抛出此错误。
我的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" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageButton
android:id="@+id/IB_Nearest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="IB_Nearest"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:src="@drawable/marker"
android:background="@null"
android:layout_margin="30dp"
/>
<ImageButton
android:id="@+id/IB_Category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="IB_Category"
android:src="@drawable/book"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:background="@null"
android:layout_margin="30dp"
/>
<ImageButton
android:id="@+id/IB_Map"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="IB_Map"
android:layout_below="@id/IB_Category"
android:layout_alignParentRight="true"
android:src="@drawable/mappp"
android:background="@null"
android:layout_margin="30dp"
/>
<ImageButton
android:id="@+id/IB_Search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="IB_Search"
android:src="@drawable/search"
android:layout_below="@id/IB_Nearest"
android:layout_alignParentLeft="true"
android:background="@null"
android:layout_margin="30dp"
/>
<ImageButton
android:id="@+id/IB_NewPlace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="IB_NewPlace"
android:layout_below="@id/IB_Search"
android:layout_alignParentLeft="true"
android:src="@drawable/info"
android:background="@null"
/>
<ImageButton
android:id="@+id/IB_Statistics"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="IB_Statistics"
android:src="@drawable/chart"
android:layout_below="@id/IB_Map"
android:layout_alignParentRight="true"
android:background="@null"
/>
</RelativeLayout>
</ScrollView>
我的主要:
public class MainActivity extends FragmentActivity implements
LoaderManager.LoaderCallbacks<Cursor>{
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
}
public void IB_Map (View v){
Intent intent = new Intent(MainActivity.this, Map.class);
startActivity(intent);
}
public void IB_Category(View v){
Intent intent = new Intent(MainActivity.this, TreeChoice.class);
startActivity(intent);
}
public void IB_Nearest (View v){
Intent intent = new Intent(MainActivity.this, NearPlaces.class);
startActivity(intent);
}
public void IB_Search (View v){
Intent intent = new Intent(MainActivity.this, Search.class);
startActivity(intent);
}
public void IB_NewPlace (View v){
Intent intent = new Intent(MainActivity.this, NewPlace.class);
startActivity(intent);
}
public void IB_Statistics (View v){
Intent intent = new Intent(MainActivity.this, Statistics.class);
startActivity(intent);
}
/**
* Background Async Task to Load all product by making HTTP Request
* */
public class LoadAllProducts extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
}
/**
* getting All products from url
* */
protected String doInBackground(String... args) {
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
}
}
@Override
public android.support.v4.content.Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
// TODO Auto-generated method stub
return null;
}
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
// TODO Auto-generated method stub
}
public void onLoaderReset(Loader<Cursor> arg0) {
// TODO Auto-generated method stub
}
@Override
public void onLoadFinished(
android.support.v4.content.Loader<Cursor> arg0, Cursor arg1) {
// TODO Auto-generated method stub
}
@Override
public void onLoaderReset(android.support.v4.content.Loader<Cursor> arg0) {
// TODO Auto-generated method stub
}
}
但是如果我使用这个监听器实现:
final ImageButton rightButton = (ImageButton) findViewById(R.id.IB_Map);
rightButton.setOnClickListener(new ImageButton.OnClickListener() {
public void onClick(View v)
{
Intent intent = new Intent(MainActivity.this, Map.class);
startActivity(intent);
}
});
一切正常,有人可以解释为什么会这样吗?
12-10 00:05:21.875: E/AndroidRuntime(28537): FATAL EXCEPTION: main
12-10 00:05:21.875: E/AndroidRuntime(28537): java.lang.IllegalStateException: Could not find a method IB_Map(View) in the activity class lt.whitegroup.workplaces.ui.MainActivity for onClick handler on view class android.widget.ImageButton with id 'IB_Map'
12-10 00:05:21.875: E/AndroidRuntime(28537): at android.view.View$1.onClick(View.java:2131)
12-10 00:05:21.875: E/AndroidRuntime(28537): at android.view.View.performClick(View.java:2485)
12-10 00:05:21.875: E/AndroidRuntime(28537): at android.view.View$PerformClick.run(View.java:9080)
12-10 00:05:21.875: E/AndroidRuntime(28537): at android.os.Handler.handleCallback(Handler.java:587)
12-10 00:05:21.875: E/AndroidRuntime(28537): at android.os.Handler.dispatchMessage(Handler.java:92)
12-10 00:05:21.875: E/AndroidRuntime(28537): at android.os.Looper.loop(Looper.java:130)
12-10 00:05:21.875: E/AndroidRuntime(28537): at android.app.ActivityThread.main(ActivityThread.java:3687)
12-10 00:05:21.875: E/AndroidRuntime(28537): at java.lang.reflect.Method.invokeNative(Native Method)
12-10 00:05:21.875: E/AndroidRuntime(28537): at java.lang.reflect.Method.invoke(Method.java:507)
12-10 00:05:21.875: E/AndroidRuntime(28537): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
12-10 00:05:21.875: E/AndroidRuntime(28537): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
12-10 00:05:21.875: E/AndroidRuntime(28537): at dalvik.system.NativeStart.main(Native Method)
12-10 00:05:21.875: E/AndroidRuntime(28537): Caused by: java.lang.NoSuchMethodException
12-10 00:05:21.875: E/AndroidRuntime(28537): at java.lang.Class.getDeclaredMethods(Native Method)
12-10 00:05:21.875: E/AndroidRuntime(28537): at java.lang.ClassCache.getDeclaredPublicMethods(ClassCache.java:153)
12-10 00:05:21.875: E/AndroidRuntime(28537): at java.lang.ClassCache.getMethodsRecursive(ClassCache.java:216)
12-10 00:05:21.875: E/AndroidRuntime(28537): at java.lang.ClassCache.findMethods(ClassCache.java:175)
12-10 00:05:21.875: E/AndroidRuntime(28537): at java.lang.ClassCache.getMethods(ClassCache.java:167)
12-10 00:05:21.875: E/AndroidRuntime(28537): at java.lang.Class.getMethod(Class.java:961)
12-10 00:05:21.875: E/AndroidRuntime(28537): at android.view.View$1.onClick(View.java:2124)
12-10 00:05:21.875: E/AndroidRuntime(28537): ... 11 more
答案 0 :(得分:1)
您应该setContentView(R.layout.<your_layout_id>)
方法onCreate()
。