آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در تعریف TextView در کلاس اکتیویتی،فورس استاپ

omidmhks  11 سال پیش  11 سال پیش
+1 0

سلام

برای اینکه بتونم از دکمه کم و زیاد برای نشون دادن ذکر های اضافه شده استفاده کنم مجبورم کد رو این شکلی کنم

 public class zekrshomar extends ZekrActivity {
         TextView shz = (TextView) findViewById(R.id.txtZekrShow);
 @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        int keyCode = event.getKeyCode();
        if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
            counter++;
            shz.setText("" + counter);
            if (event.getAction() == KeyEvent.ACTION_UP) {
                counter++;
                shz.setText("" + counter);
            }
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
            if (event.getAction() == KeyEvent.ACTION_UP) {
                counter--;
                shz.setText("" + counter);
            }
            return true;
        }
        return super.dispatchKeyEvent(event);
    }

 

وقتی برنامه رو اجرا میکنم میرم تو این قسمت فورس استاپ میده

البته اگه TextView رو اینجا ننویسم ببرمش همون پایین و 

                shz.setText("" + counter);

ها رو حذف کنم برنامه درست کار میکنه به counter هم اضافه میکنه اما نشون نمیدتشون تا زمانی که یکبار با دکمه های  رو روی صفحه کم یا زیاد کنیم و نشون بده

.

 من امتحان کردم راه های دیگه رو کالا وقتی TextView رو اون بالا بنویسم ارور میده

.

دکمه  ها رو هم که وقتی بخوام اون پایین معرفی کنم خودتون میدونید دیگه نمیشه

.

کمک

+1 0
نوشتید "تو این قسمت فورس استاپ میده" منظورتون کدوم خطه؟ (11 سال پیش)
0 0
دوست عزیز شما TextViewـتون رو در جای مناسب مقدار دهی نکردید ، این کار باید تو متد OnCreate انجام بشه ، در حالی که شما الان در بدنه اصلی کلاستون مقدار دهی کردید. (11 سال پیش)
0 0
خب اگه تو oncreate انجام بدم کد های مربوط به دکمه اون رو نمیشناسن (11 سال پیش)
0 0
خب اگه تو oncreate انجام بدم کد های مربوط به دکمه اون رو نمیشناسن (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Andronymous  11 سال پیش
+2 0

شما باید تکست ویو  public تعریف کنین تا بتونین توی توابع زیر شاخه ی  کلاستون ازش استفاده کنین و اگر توی کلاس های دیگه هم خواستین ازش استفاده کنین باید public static تعریف کنین.
همچنین باید خارج از بدنه ی کلاس داخل متد OnCreate و یا توابع خودتون مقدار دهی کنین!
textView رو به شکل زیر تعریف کنین
برای استفاده فقط در همین کلاس :

public TextView shz =(TextView) findViewById(R.id.txtZekrShow);

و برای استفاده هم در این کلاس و هم در کلاس های دیگه ، در هر کلاسی که خواستید به صورت static تعریف کنین :

public static TextView shz ;

و بعد توی توابع یا متد OnCreate کلاسی که میخواین داخلش از textView استفاده کنین ، مقدار دهی کنید به عنوان مثال شما باید خط زیر رو توی تابع ()dispatchKeyEvent در کنار تعریف keyCode  بنویسید:

shz = (TextView) findViewById(R.id.txtZekrShow);
+1 0
واقعا دمت گرم میخوامت استاد مایی سروری (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .