在android 4.2我的应用程序工作正常,但当我尝试使用android 4.0.4测试它时,我有此消息错误:
04-16 15:06:46.601: E/AndroidRuntime(3844): java.lang.NoSuchMethodError: android.widget.RelativeLayout.setBackground
04-16 15:06:46.601: E/AndroidRuntime(3844): at com.myapp.MainActivity.cambiarPagina(MainActivity.java:271)
04-16 15:06:46.601: E/AndroidRuntime(3844): at com.myapp.MainActivity.cambiarPagina(MainActivity.java:119)
04-16 15:06:46.601: E/AndroidRuntime(3844): at com.myapp.MainActivity.access$0(MainActivity.java:116)
04-16 15:06:46.601: E/AndroidRuntime(3844): at com.myapp.MainActivity$2.onClick(MainActivity.java:70)
04-16 15:06:46.601: E/AndroidRuntime(3844): at android.view.View.performClick(View.java:3524)
04-16 15:06:46.601: E/AndroidRuntime(3844): at android.view.View$PerformClick.run(View.java:14202)
04-16 15:06:46.601: E/AndroidRuntime(3844): at android.os.Handler.handleCallback(Handler.java:605)
04-16 15:06:46.601: E/AndroidRuntime(3844): at android.os.Handler.dispatchMessage(Handler.java:92)
04-16 15:06:46.601: E/AndroidRuntime(3844): at android.os.Looper.loop(Looper.java:137)
04-16 15:06:46.601: E/AndroidRuntime(3844): at android.app.ActivityThread.main(ActivityThread.java:4499)
04-16 15:06:46.601: E/AndroidRuntime(3844): at java.lang.reflect.Method.invokeNative(Native Method)
04-16 15:06:46.601: E/AndroidRuntime(3844): at java.lang.reflect.Method.invoke(Method.java:511)
04-16 15:06:46.601: E/AndroidRuntime(3844): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
04-16 15:06:46.601: E/AndroidRuntime(3844): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
04-16 15:06:46.601: E/AndroidRuntime(3844): at dalvik.system.NativeStart.main(Native Method)
我使用setBackgroud添加一些动画,比如这段代码
AnimationDrawable animation = new AnimationDrawable();
animation.addFrame(getResources().getDrawable(R.drawable.d1), 200);
animation.addFrame(getResources().getDrawable(R.drawable.dio), 1000);
animation.addFrame(getResources().getDrawable(R.drawable.da1), 200);
animation.setOneShot(true);
view.setBackground(animation);
view.post(new Starter(animation));
我已将支持库添加到我的项目中,我不知道如何解决这个问题,任何帮助都会被贬低!
答案 0 :(得分:32)
已添加到API 16,尝试setBackgroundDrawable()
答案 1 :(得分:31)
除了@dmon回答:你可以用这种方式调用正确的方法:
if (Build.VERSION.SDK_INT >= 16) {
layout.setBackground(animation);
} else {
layout.setBackgroundDrawable(animation);
}
答案 2 :(得分:2)
试试这个,它对我有用:
Bitmap bitmap = BitmapFactory.decodeFile(new ImageLoader().fullPath + "/desiredFilename.png");
Resources res = getResources();
BitmapDrawable bitmapDrawable = new BitmapDrawable(res, bitmap);
int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk < android.os.Build.VERSION_CODES.JELLY_BEAN)
ll.setBackgroundDrawable(bitmapDrawable);
else
ll.setBackground(bitmapDrawable);
&#13;
答案 3 :(得分:0)
这是我的问题:
imageButton.setOnTouchListener(popupWindow.createDragToOpenListener(imageButton));
我像这样修复它:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
imageButton.setOnTouchListener(popupWindow.createDragToOpenListener(imageButton));
}