解决android中的弃用方法

时间:2015-02-26 10:58:21

标签: android

我的应用程序需要支持从15到19的Android版本,所以对于低于15的版本,我使用的是弃用方法,对于更高版本,我使用的是android提供的最新方法。我的项目设置已显示在下面的屏幕截图中
Project setup

现在在运行时我将检查android的版本并相应地使用合适的方法。我知道如果一个方法被弃用它仍然可以使用,但我最近遇到了[ BitmapDrawable(位图)]构造函数的问题,在我使用它并且工作正常直到果冻豆但与kikkat一起使用时会产生巨大的问题。所以我不想重复同样的事情。现在,编译器抛出一个错误,指出" Call需要API级别16(当前min为15)" 。我出错的地方请帮帮忙。

我的工作区和代码的屏幕截图 Code and error

我认为第二张图片无法正确显示,我自己提供了代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn = (Button) findViewById(R.id.btnColor);
    btn.setBackgroundColor(Color.parseColor("#FF0000"));

    btn.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub

            switch (event.getAction()) {

            case MotionEvent.ACTION_DOWN: {

                ((Button) v).setBackgroundColor(Color.parseColor("#87CEFA"));
                break;

            }


            case MotionEvent.ACTION_UP:

            case MotionEvent.ACTION_CANCEL: {

                Drawable orginal = ((Button) v).getBackground();
                int currentApi = Build.VERSION.SDK_INT; 
                if(currentApi >= 16)
                    ((Button) v).setBackground(orginal);
                else
                    ((Button) v).setBackgroundDrawable(orginal);

                break;

            }


            }



            return true;
        }
    });
}

1 个答案:

答案 0 :(得分:0)

尝试添加

@TargetApi(16) @SuppressLint("NewApi")

超过onTouch方法