بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

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

مدیریت گفتگو
Atlas 11 سال پیش
آخرین تغییر: 11 سال پیش

در قسمت انتهایی آموزش 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();

 

 

نظرات

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

پاسخ‌ها 6

Atlas 11 سال پیش

              

نظرات

Atlas 11 سال پیش

نظرات

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

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

 public static Activity activity;

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

 Dialog dialog = new Dialog(G.activity);

نظرات

Atlas 11 سال پیش
این کار رو هم کردم ولی فرقی نکرد دوباره بعد تمام شدن تایم کرش میکنه
Atlas 11 سال پیش

 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 سال پیش

 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();
}
}

نظرات

Atlas 11 سال پیش
تو Logcat هم خطای NullPointerException میگیره و مربوط میشه به همین تعریف دیالوگ
sun.of.god.7 11 سال پیش
دوست عزیز مشکلتونو فهمیدم واسه ی دیالوگ ها حتما باید از context اکتیویتی استفاده کنی با context application کرش میده فکر کنم این رو خود استادم گفتن شما فقط بجای G.context از ThreadCounter.this استفاده کن
Atlas 11 سال پیش
نمیشه داداش من شما یه لطفی کن سورس برنامه بگیر یه تست خودت بزن اینجوری فک کنم خودتون متوجه قضیه میشین. اگر هم این قضیه شدنی نیست پس یکی لطفی کنه بگه چطوری میشه یه تایمر تعریف کرد که بعد تمام شدنش بشه از دیالوگ استفاده کرد؟
sun.of.god.7 11 سال پیش

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

 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();
}
}

نظرات

Atlas 11 سال پیش
دستت درد نکنه کارم تا حدی راه افتاد کلا میخواستم که از تایمر برنامه استاد جای دیگه استفاده کنم مثلا تو بازی hangman از این به بعدشو یکاریش میکنم. از این که وقت گذاشتی خیلی ممنونم
sun.of.god.7 11 سال پیش
خواهش میکنم میدونم چه حالی داری منم وقتی جایی گیر میکنم رو اعصاب و روانم تاثیر میزاره میخوام سرمو بکوبم تو دیوار خلاصه که تو برنامه نویسی این گرفتاری ها زیاده موفق باشی

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