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

مشکل در پروژه Counter استاد

Atlas  11 سال پیش  11 سال پیش
0 0

در قسمت انتهایی آموزش Counter استاد بعد از پایان تایمر یک toast میذاره من میخوام جای toast یک دیالوگ ساده نمایش داده بشه ؟ خودم اینجوری ست کردم ولی بعد پایان تایم برنامه کرش میکنه !!!

 G.HANDLER.post(new Runnable() {

@Override
public void run() {

Toast.makeText(G.context, "Time is Finish..", Toast.LENGTH_SHORT).show();
Dialog dialog = new Dialog(G.context);
dialog.setContentView(R.layout.dialog);
dialog.show();

 

 

0 0
به جای context اپلیکشن از context اکتی وی تی استفاده کنید که کاملتر است .یعنی به جای G.context بنویسید ActivityName.this و یا this (11 سال پیش)
0 0
قبول نمیکنه و خطای خط چین میگیره با این پیغام No enclosing instance of the type HangmanActivity is accessible in scope (11 سال پیش)
0 0
فکر کنم دیالوگ context اپلیکیشن قبول نمیکنه.از this استفاده کن (11 سال پیش)
0 0
قبول نمیکنه و خطای خط چین میگیره با این پیغام No enclosing instance of the type HangmanActivity is accessible in scope (11 سال پیش)
0 0
اگه میتونی از قسمت ارور های توی logcat یه عکس بگیرو اینجا بزار راحت تر میشه تشخیص داد (11 سال پیش)
 برای این سوال 6 پاسخ وجود دارد.
پاسخ به سوال 
Atlas  11 سال پیش
0 0

              
پاسخ به سوال 
Atlas  11 سال پیش
0 0

0 0
دوستان اگر امکانش هست منو راهنمایی کنید ، وقتی تومسئله ای بمونم تا حل نشه رو مخم میمونه.. (11 سال پیش)
0 0
یعنی کسی نمیتونه جای اون toast یک دیالوگ تعریف کنه؟ (11 سال پیش)
0 0
......... (11 سال پیش)
+1 0
سلام راستش من با این مشخصاتی که دادی فقط میتونم بگم تو اکتیویتی ThreadCounter خط 85 خطای کرش وجود داره حالا شاید بقیه بتونن بهتر راهنمایی کنن (11 سال پیش)
0 0
خطاشو خودم پیدا کرده بودم ولی نمیدونم چرا دیالوگ داخل thread کار نمیکنه اینجا هم دوستانی که اهل راهنمایی باشن متاسفانه خیلی کمه! (11 سال پیش)
+1 0
شما کد کامل این اکتیویتی رو بزار حتما کمک میکنن به سوال پرسیدنم ربط داره باید دقیق سوالو بپرسی وگرنه کسی که علم غیب نداره (11 سال پیش)
0 0
پروژه counter استاد دیگه فک کنم همه داشته باشن من فقط میخواستم اون قسمت آخر که استاد ی Toast گذاشت یه دیالوگ ساده بزارم همین سورس همون سورس استاده فک نکنم کار سختی باشه ولی هر جا سرچ کردم به نتیجه نرسیدم، مشکل من اینه که وقتی به مشکلی بخرم تا حلش نکنم رو مخم میمونه (11 سال پیش)
پاسخ به سوال 
Sajad HP  11 سال پیش
0 0

در کلاس G یک فیلد با نام زیر بسازید : 

 public static Activity activity;

بعد به ورودی Dialog این فیلد رو بده بجای context:

 Dialog dialog = new Dialog(G.activity);
0 0
این کار رو هم کردم ولی فرقی نکرد دوباره بعد تمام شدن تایم کرش میکنه (11 سال پیش)
پاسخ به سوال 
Atlas  11 سال پیش
0 0

 package com.uncocoder.app.course.counter;

import android.app.Dialog;
import android.util.Log;
import android.widget.TextView;


public class ThreadCounter extends Thread {

private int seconds;
private int counter;
private TextView textView;


public void setSeconds(int value) {
seconds = value;
counter = seconds;
}


public void setTextView(TextView value) {
textView = value;
}


@Override
public void run() {
super.run();
while (counter > 0) {
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
counter--;
if (textView != null) {
G.HANDLER.post(new Runnable() {

@Override
public void run() {
int min = (int) Math.floor(counter / 60);
int sec = counter % 60;

String minPrefix = "";
if (min < 10) {
minPrefix = "0";
}

String secPrefix = "";
if (sec < 10) {
secPrefix = "0";
}

textView.setText(minPrefix + min + ":" + secPrefix + sec);
}
});
}
Log.i("LOG", "Counter: " + counter);
}

G.HANDLER.post(new Runnable() {

@Override
public void run() {
Dialog dialog = new Dialog(G.activity);
dialog.setContentView(R.layout.dialog);
dialog.show();
}
});
}

}
پاسخ به سوال 
Atlas  11 سال پیش
0 0

 package com.uncocoder.app.course.counter;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;


public class ActivityMain extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView txtCounter = (TextView) findViewById(R.id.txtCounter);

ThreadCounter counter = new ThreadCounter();
counter.setSeconds(5);
counter.setTextView(txtCounter);
counter.start();
}
}
0 0
تو Logcat هم خطای NullPointerException میگیره و مربوط میشه به همین تعریف دیالوگ (11 سال پیش)
+1 0
دوست عزیز مشکلتونو فهمیدم واسه ی دیالوگ ها حتما باید از context اکتیویتی استفاده کنی با context application کرش میده فکر کنم این رو خود استادم گفتن شما فقط بجای G.context از ThreadCounter.this استفاده کن (11 سال پیش)
0 0
نمیشه داداش من شما یه لطفی کن سورس برنامه بگیر یه تست خودت بزن اینجوری فک کنم خودتون متوجه قضیه میشین. اگر هم این قضیه شدنی نیست پس یکی لطفی کنه بگه چطوری میشه یه تایمر تعریف کرد که بعد تمام شدنش بشه از دیالوگ استفاده کرد؟ (11 سال پیش)
پاسخ به سوال 
sun.of.god.7  11 سال پیش
+1 0

دادا این کد اینم نتیجش

 package mehran.sunofgod.alarm;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.os.Handler;


public class AlarmActivity extends Activity {

Handler handler = new Handler();


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread th = new Thread(new Runnable() {

@Override
public void run() {
try {
Thread.sleep(4000);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.post(new Runnable() {

@Override
public void run() {
Dialog d = new Dialog(AlarmActivity.this);
d.setContentView(R.layout.main);
d.show();
}
});

}
});
th.start();
}
}
0 0
دستت درد نکنه کارم تا حدی راه افتاد کلا میخواستم که از تایمر برنامه استاد جای دیگه استفاده کنم مثلا تو بازی hangman از این به بعدشو یکاریش میکنم. از این که وقت گذاشتی خیلی ممنونم (11 سال پیش)
+1 0
خواهش میکنم میدونم چه حالی داری منم وقتی جایی گیر میکنم رو اعصاب و روانم تاثیر میزاره میخوام سرمو بکوبم تو دیوار خلاصه که تو برنامه نویسی این گرفتاری ها زیاده موفق باشی (11 سال پیش)

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