Attempt to invoke virtual method in Resources res = getResources();

前端 未结 2 2043
生来不讨喜
生来不讨喜 2020-12-12 03:21

I am trying to change the background color of an activity using a handler, but I am getting an error \"Attempt to invoke virtual method\".

Here is my code

         


        
2条回答
  •  一生所求
    2020-12-12 03:42

    Why do you need res and clrItems as fields? However you can do something like this

    public class MainActivity extends AppCompatActivity {
    
    private EditText editTextUser, editTextPass;
    private RelativeLayout relativeLayoutMain;
    private Random random = new Random();
    Intent intent;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        relativeLayoutMain = (RelativeLayout) findViewById(R.id.relativeLayoutMain);
    
        res = getResources();
        clrItems = res.getIntArray(R.array.color_background);
    
        Button btnSignIn = (Button) findViewById(R.id.buttonSignIn);
        btnSignIn.setEnabled(false);
    
        handler.postDelayed(runner, 2000);
    
        Button buttonSignUp = (Button) findViewById(R.id.buttonSignUp);
        buttonSignUp.setText("Not registered? CLICK HERE");
    
        editTextUser = (EditText) findViewById(R.id.editTextUser);
        editTextPass = (EditText) findViewById(R.id.editTextPassword);
    
    
        if (editTextUser.getText().toString() != null && editTextPass.getText().toString() != null) {
            btnSignIn.setEnabled(true);
        }
    
    
    }
    
    android.content.res.Resources res;
    int[] clrItems;
    
    List arrayOfColor = new ArrayList();
    
    public List getArrayOfColor() {
        arrayOfColor.add(clrItems);
        return arrayOfColor;
    }
    
    Runnable runner = new Runnable() {
        @Override
        public void run() {
            Log.e("run: ", "call");
    
            Bitmap bitmap = Bitmap.createBitmap(612, 612, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
    
            final int clr = 0xFF424242;
            final Paint paint = new Paint();
            final Rect destRect = new Rect((612-bitmap.getWidth())/2,
                    24,
                    (612)-(612-bitmap.getWidth())/2,
                    612-24);
            final RectF rectF = new RectF(destRect);
            final Rect srcRect = new Rect(0, 0, bitmap.getWidth(), 612);
            final float roundPx = 612;
    
            paint.setAntiAlias(true);
            canvas.drawARGB(0, 0, 0, 0);
            paint.setColor(clr);
            canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    
            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
            canvas.drawBitmap(bitmap, srcRect, destRect, paint);
    
            GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[]{0xFF616261, 0xFF131313});
            gd.setCornerRadius(0f);
            relativeLayoutMain.setBackground(gd);
            handler.postDelayed(runner, 4000);
        }
    };
    
    public void login(View view) {
        intent = new Intent(this, HomeActivity.class);
        startActivity(intent);
    }
    
    public void register(View view) {
        intent = new Intent(this, SignUpActivity.class);
        startActivity(intent);
    }
    }
    

提交回复
热议问题