#android #button #drawable
#Android #кнопка #drawable
Вопрос:
Если я изначально задаю растровому изображению значение drawableLeft (в xml или с помощью setCompoundDrawablesWithIntrinsicBounds в OnStart и т.д.), Затем изменяю (снова setCompoundDrawablesWithIntrinsicBounds) на другое растровое изображение или AnimationDrawable, вызывая ‘StackOverflowError’. Я не нашел никакого API для выпуска оригинального drawLeft в Google doc. Есть ли какое-либо решение для этого?
public class TestLinearlayoutActivity extends Activity {
/** Called when the activity is first created. */
Button locationTitleButton = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
locationTitleButton = (Button) findViewById(R.id.LocationTitleButton);
}
@Override
public void onStart() {
super.onStart();
locationTitleButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
locationTitleButton.setCompoundDrawablesWithIntrinsicBounds(R.drawable.loading, 0, 0, 0);
}
});
}
}
В файле layout есть ресурс по умолчанию для leftDrawable. После приведенного выше setCompoundDrawablesWithIntrinsicBounds в onClick происходит сбой
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): FATAL EXCEPTION: main
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): java.lang.StackOverflowError
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.util.LongSparseArray.get(LongSparseArray.java:87)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.util.LongSparseArray.get(LongSparseArray.java:79)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getCachedDrawable(Resources.java:1746)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1664)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:265)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.loadDrawable(Resources.java:1694)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at android.content.res.Resources.getDrawable(Resources.java:581)
11-14 18:18:13.321: ERROR/AndroidRuntime(2187): at and
Комментарии:
1. Вау, так что произойдет сбой при запуске вашего кода … это довольно забавно. Серьезно, ты можешь опубликовать какой-нибудь код.
2. добавить код и аварийный стек
3. это полный код для OnClickListener?
4. Также опубликуйте layout.xml файл, а также вы пробовали очевидные исправления… перекомпилируйте проект, очистив его (используя Eclipse). Убедитесь, что ресурсы находятся в файле ресурсов.
5. Хмм, запустил код fine button, изменил изображения и не получил ошибок, подобных вашей. Сообщите мне все ваши параметры, версию SDK, версию Eclipse, версию Android (ADK), платформу, на которой вы программируете.