Может кто-нибудь, пожалуйста, укажите мне, что я пропускаю в программе ниже

1

Я пытаюсь передать контекст из одного класса в другой. PLS сказать мне, что я делаю неправильно.

Draw.java

public class Draw extends View{ 

    private Context context;
    private Paint paint = null;
    private Point start,end;
    public Draw(Context check){
        super(check);
        paint();
    }       

    protected void onDraw(Canvas canvas){
        super.onDraw(canvas);
        canvas.drawRect(60,60,120,120,paint);
        Check check = new Check(context.getApplicationContext());
        check.update();
    }
    public void paint(){
        paint= new Paint();     
        paint.setColor(Color.YELLOW);
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
    }
}

Check.java

public class Check {
    private static Check check = null;
    private Context context;
    public Check(Context context){
        this.context = context;
    }

    void update() {
        Toast.makeText(context, "Context Received", Toast.LENGTH_LONG).show();
    }
}

RectangleActivity.java

public class RectangleActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Context context;
        super.onCreate(savedInstanceState);
        Draw draw = new Draw(this);
        setContentView(draw);
    }
}

пожалуйста, помогите мне.. Я застрял в этой проблеме в течение нескольких дней...

  • 0
    в чем проблема, вы получаете любую ошибку, пожалуйста, вставьте ошибку здесь из вашего logcat
Теги:

2 ответа

3
Лучший ответ

в вашем Draw-constructor вы никогда не сохраняете контекст в своей переменной, это должно быть как в Check-constructor:

this.context = context;

в противном случае у вас будет null когда вы

context.getApplicationContext()

Который также немного ненужен, достаточно передать context как есть.

  • 0
    Большое вам спасибо ... это сработало ...
  • 0
    Добро пожаловать. Пожалуйста, отметьте ответ как решение, щелкнув маленький v-символ слева от него, чтобы люди знали, что вопрос был решен :)
1

либо инициализировать переменную контекста в конструкторе. или используйте this.getContext(); вместо контекста в классе представления.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню