بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل در ارتباط با Custom Control
سلام دوستان
من دوتا sdk دارم برای برنامه نویسی اندروید دارم : یکی ورژن قدیمی هست که همین سایت ارائه داده
و یکی دیگه که خودم اپدیت کردم به sdk 25
الان مشکل من اینجاست که سمپل آموزش Custom Control در sdk قدیمی کار میکنه
اما با ورژن جدید به من ارور NullPointerException میده !!!!
و به این خط ایراد میگیره
customProgress.setProgress(percent);
(این برنامه کپی سمپل آموزش اندروید میباشد)
public class MainActivity extends AppCompatActivity {
private CustomProgress customProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
customProgress = (CustomProgress)findViewById(R.id.customProgress);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
int percent = 0;
while (percent <= 100) {
try {
Thread.sleep(30);
percent++;
customProgress.setProgress(percent);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
}
}
public class CustomProgress extends ImageView {
private Paint paint;
private Paint textPaint;
private static final int STROKE_WIDTH = 8;
private int percent = 0;
public CustomProgress(Context context) {
super(context);
init(context);
}
public CustomProgress(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public CustomProgress(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public CustomProgress(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context);
}
public void setProgress(int value) {
percent = value;
postInvalidate();
}
private void init(Context context) {
paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(STROKE_WIDTH);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
textPaint = new Paint();
textPaint.setColor(Color.BLACK);
textPaint.setAntiAlias(true);
textPaint.setStyle(Paint.Style.FILL_AND_STROKE);
textPaint.setTextSize(8);
textPaint.setTextAlign(Paint.Align.CENTER);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF rectF = new RectF();
rectF.left = 0 + STROKE_WIDTH;
rectF.right = getWidth() - STROKE_WIDTH;
rectF.top = 0 + STROKE_WIDTH;
rectF.bottom = getHeight() - STROKE_WIDTH;
int red = (int) ((100 - percent) * 2.5f);
int green = (int) (percent * 2.5f);
paint.setColor(Color.rgb(red, green, 0));
int sweepAngle = percent * 360 / 100;
canvas.drawArc(rectF, 0, sweepAngle, true, paint);
canvas.drawText(percent + "%", getWidth() / 2, getHeight() / 2, textPaint);
}
}
0
0
customProgress.setProgress رو داخل یک هندلر بذار (9 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .