PDA

View Full Version : اولین برنامه اندرویدی اصلا اجرا نمی شه



desatir7316
جمعه 05 دی 1393, 16:55 عصر
سلام دوستان
یه برنامه ساده می خوام بنویسم که دوتا عدد رو جمع کنه
ولی اصلا اجرا نمی شه

public class MainActivity extends ActionBarActivity {

private EditText num1;
private EditText num2;
private Button btn;
private TextView res;

private int n1=0;
private int n2=0;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}

num1 = (EditText) findViewById(R.id.main_num1);
num2 = (EditText) findViewById(R.id.main_num2);

btn = (Button) findViewById(R.id.main_btn);

res = (TextView) findViewById(R.id.main_res);


btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

n1 = Integer.parseInt(num1.getText().toString());
n2 = Integer.parseInt(num2.getText().toString());

int s = n1 + n2;

res.setText(s + "");
}
});



}




تست رو روی گوشیم انجام می دم که مستقیم به لپ تاپ وصله
تا قبل از onclick هیچ اروری نمی ده ولی روی onclick ارور می ده
همه چیز هم از onclick به بعد پاک کردم و سعی کردم یه مقدار به صورت مستقیم به یکی از کنترل ها قرار بدم که بازم نشد
از محیط دیباگ هم که چیزی نمی شه فهمید
ممنون می شم راهنمایی کنید

abbasalim
جمعه 05 دی 1393, 18:47 عصر
سلام
متن لاگ خطا رو بزارید

desatir7316
جمعه 05 دی 1393, 19:56 عصر
من دقیقا نمی دونم لاگ رو باید از کجا بذارم
از توی logCat ؟
خوب خیلی خطاها با رنگ قرمز داخلشه
کدوم رو بذارم؟

desatir7316
شنبه 06 دی 1393, 07:45 صبح
http://stackoverflow.com/questions/27660042/my-first-android-app-does-not-work

من سوالمو اينجا پرسيدم
يه جوابي دادن اصلا نمي دونم چطوري بايد تو برنامه بزنمش
دوتا هم منفي گرفتم

Ebrahimkh
شنبه 06 دی 1393, 10:39 صبح
سلام
من این رو به toString تغییر دادم جواب داد


res.setText(s + "");

منظورم "" (کتیشنهاست)

abbasalim
یک شنبه 07 دی 1393, 09:50 صبح
ببین دوست عزیز شما یک فرگمنت دارید ولی دارید ویوهاتون رو داخل اکتیویتی صدا می زنید واسه همین هم نمیتونید ویوها رو پیداکنید برید داخل فرگمنتتون و کدها رو اونجا بزنید. از اونجا که به نظر تازه کار میاید پیشنهادم اینه که وقتی اکتیویتی می سازید blank activity رو انتخاب کنید تا فرگمنت ساخته نشه

desatir7316
یک شنبه 07 دی 1393, 20:40 عصر
blank که زدم
ببنید من کد هامو توی main.java می زنم و اشیاء هم توی main.xml قرار می دم
این کد رو ببنید:

private EditText num1;
private EditText num2;
private Button btn;
private TextView res;

private int n1 = 0;
private int n2 = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

num1 = (EditText) findViewById(R.id.main_number1);
num2 = (EditText) findViewById(R.id.main_number2);

btn = (Button) findViewById(R.id.main_btn);

res = (TextView) findViewById(R.id.main_res);

n1 = Integer.parseInt(num1.getText().toString());
n2 = Integer.parseInt(num2.getText().toString());

int s = n1 + n2;

res.setText(s + "");

}


از خط زیر به خطا می ده:

n1 = Integer.parseInt(num1.getText().toString());

saeed_g21
یک شنبه 07 دی 1393, 20:50 عصر
مگه میخوای String رو به Integer تبدیل کنی ؟

اگه بله :
n1 = Integer.valueOf(num1.getText().toString());
استفاده کن
دقت کن اگه یک کاراکتر String بین اعداد تبدیلی به Integer باشه خطا خواهد داد که بهتر است از try استفاده کنی

desatir7316
یک شنبه 07 دی 1393, 20:59 عصر
بازم خطا میده
اصلا برنامه اجرا نمی شه
تا باز می شه پیغام می ده unfortunately, test has been stopped

از روی این آموزش دارم می رم : http://nikandroid.com/%D9%BE%DA%A9%DB%8C%D8%AC-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%85%D9%82%D8%AF%D9%85%D8%A7%D8%AA%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88/

saeed_g21
یک شنبه 07 دی 1393, 21:04 عصر
Logcat ی که میده رو اینجا قرار بده

همون پیغام های قرمز رنگی که موقع خطا میاد رو میگم

desatir7316
یک شنبه 07 دی 1393, 21:08 عصر
توی youwave دارم تست می گیرم، نمی دونم ربطی داره یا نه ولی توی لاگ کت هیج کدوم از ساعت ها و زمان ها با زمان حال تطابق نداره
چی باید بذارم الان

saeed_g21
یک شنبه 07 دی 1393, 21:48 عصر
بخوای پروژت رو جایی آپلود کن بده نگاه کنم

desatir7316
یک شنبه 07 دی 1393, 22:38 عصر
http://s5.picofile.com/file/8160199318/test.rar.html

ممنون

saeed_g21
یک شنبه 07 دی 1393, 23:20 عصر
یکی از اشکالت اینه که امدی مراحل دریافت مقادیر و جمع آنها رو در Oncreate گذاشتی که وقتی Activity اجرا میشه در EditText ها کاراکتر پیدا میکنه به جای عدد و قطعا کاراکترها که جمع نمی شن با هم پس خطا میده و میندازه بیرون

اشکال دوم : چند پست قبل به try اشاره کردم می توانستید متدهای مورد نظر رو در try بندازید و خطا رو با یک Toast بگیری و پی به خطاش میبردی

ببین الان باتن رو هم تعریف نکردی باتن رو تعریف کن و عملیات دریافت و جمع و نمایش رو در setOnClickListener باتن انجام بده

تشریحی گفتم که خودت انجام بدی بهتر یاد بگیری کمی تلاش کن نتونستی بگو کدها رو بدم برات یا تشریحی راهنماییت کنم

desatir7316
یک شنبه 07 دی 1393, 23:52 عصر
ممنون من می نویسم و ازتون راهنمایی می گیرم
فقط اینکه میگید باتن رو تعریف نکردم چیه؟
این خط کد رو که گذاشتم کافی نیست؟
btn = (Button) findViewById(R.id.main_btn);
من قیلشم این برنامه رو با اون قسمت setOnClickListener انجام دادم بازم خطا میداد از همین قسمت ها، قبیل از اینکه برنامه لودشه و بخوام تست کنم
کلاقبل ازعمل جمع، اونجایی که می خوای مقدار توی n1 هم بریزم روخطا میده

یه مشکل دیگه که هست اینه که خطاها رو نمی بینم
باید با شبیه ساز خود eclipse تست کنم که خطاهارو نشون بده؟
از youwave الان استفاده می کنم

saeed_g21
دوشنبه 08 دی 1393, 00:01 صبح
فقط اینکه میگید باتن رو تعریف نکردم چیه؟
این خط کد رو که گذاشتم کافی نیست؟
btn = (Button) findViewById(R.id.main_btn);

بله
دقیقا مثل کد زیر انجام بده


btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
n1 = Integer.valueOf(num1.getText().toString());
n2 = Integer.valueOf(num2.getText().toString());
int s = n1 + n2;
res.setText(s + "");
}
});



من قیلشم این برنامه رو با اون قسمت onlistener انجام دادم بازم خطا میداد از همین قسمت ها، قبیل از اینکه برنامه لودشه و بخوام تست کنم

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

راستی
در لایوت نوع ورودی EditText هارو به number تنظیم کن که فقط اعداد قابل درج شدن باشند



یه مشکل دیگه که هست اینه که خطاها رو نمی بینم
باید با شبیه ساز خود eclipse تست کنم که خطاهارو نشون بده؟
از youwave الان استفاده می کنم
من به شخصه با ماشین مجازی کار نکردم با ماشین واقعی تست میزنم
ولی اگه بخواین من genymotion رو پیشنهاد میکنم در انجمن نیز هست فکر کنم با Eclipse نیز set بشه

desatir7316
دوشنبه 08 دی 1393, 21:11 عصر
درست شد
مشکل از مقدار های نال بود که بر می گشت

ممنون