کلیدستان

نسخه‌ی کامل: مشکل در کد نویسی و force close در اندروید
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
کسی میدونه مشکل کد من چیه که force close میده برنامه؟؟؟؟
کد رو مشاهده بفرمایید:

کد پی‌اچ‌پی:
@Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.activity_main);
        
        
        

        
String mx getResources().getString(R.string.x);
        
String bn getResources().getString(R.string.x);
        while(
true){
            
           
ConnectivityManager cm = (ConnectivityManagergetSystemService(Context.CONNECTIVITY_SERVICE);
            
NetworkInfo netInfo cm.getActiveNetworkInfo();
            if (
netInfo != null && netInfo.isConnected()) {
                try {
                    
URL url = new URL("http://site.com/" mx);
                    
HttpURLConnection urlc = (HttpURLConnectionurl.openConnection();
                    
urlc.setConnectTimeout(3000);
                    
urlc.connect();
                    if (
urlc.getResponseCode() == 200) {
                        
                        
int t Integer.parseInt(mx);
                        
1;
                        
mx Integer.toString(t);
                    }
                    else{
                     
                        break;
                    }
                } catch (
MalformedURLException e1) {
                    
// TODO Auto-generated catch block
                    
e1.printStackTrace();
                } catch (
IOException e) {
                    
// TODO Auto-generated catch block
                    
e.printStackTrace();
                }
            }

        }
        
        
int i Integer.parseInt(mx);
        
int j Integer.parseInt(bn);
        
int h j;
        if( 
!= 0){
                
               
//my codes
                
            



آخه چرا force close??????
سلام.
بنده یک نگاه کلی به کد شما انداختم. خط زیر از کدها را ببینید :

کد پی‌اچ‌پی:
while(true){ 

چون شرط برابر true قرار داده شده، یک حلقه بینهایت توسط while ساخته می شود. یعنی مرتبا کدهای حلقه اجرا می شوند. معمولا شرط حلقه while را به گونه ای می نویسند که بعد از جندین بار اجرا، شرط برآورده شده و از حلقه خارج شویم و ادامه کدها اجرا شوند.

درست میفرمایید ولی من حلقه رو در خط زیر شکستم که ادامه کد ها اجرا بشن
کد پی‌اچ‌پی:
else{          
    break;
    } 
من اصلاً متوجه نمیشم چرا force close میده برنامه

اینکه از کلاس استفاده نکردم که مشکلی نیست نه؟؟؟؟
توی MainActivity.java این کد رو قرار دادم،،، مشکلی که نیست؟؟؟


 
من توی فایل string ، این متغیر x رو هم تعریف کردم،،،، در کل مشکل کجاست؟؟؟ خیلی لازم دارم که بدونم ... لطفاً دوستان پاسخ بدید
مشکل از کد های چک کردن اینترنت نیست؟؟؟؟ ناقص که نیستن؟؟
تست کردم متوجه شدم مشکل از کدوم قسمت کد هست:
دوستان یک نظر به کد زیر بندازید ببینیم مشکلی میبینین که من توجه نکرده باشم؟؟؟
کد پی‌اچ‌پی:
if (netInfo != null && netInfo.isConnected()) {
            try {
                
URL url = new URL("mylink" mx);
                
HttpURLConnection urlc = (HttpURLConnectionurl.openConnection();
                
urlc.setConnectTimeout(3000);
                
urlc.connect();
                if (
urlc.getResponseCode() == 200) {
                    
                    
int t Integer.parseInt(mx);
                    
1;
                    
mx Integer.toString(t);
                }
                else{
                    
Toast.makeText(getApplicationContext(), "no"Toast.LENGTH_LONG).show();
                    
                }
            } catch (
MalformedURLException e1) {
                
// TODO Auto-generated catch block
                
e1.printStackTrace();
            } catch (
IOException e) {
                
// TODO Auto-generated catch block
                
e.printStackTrace();
            }
        } 
اینجا چیزی هست که ناقص باشه؟؟

 
(۱۳۹۳/۱۱/۱۱, ۰۸:۵۵ ب.ظ)'kousha.nikkar' نوشته: [ -> ]درست میفرمایید ولی من حلقه رو در خط زیر شکستم که ادامه کد ها اجرا بشن
کد پی‌اچ‌پی:
else{          
    break;
    } 
من اصلاً متوجه نمیشم چرا force close میده برنامه

اینکه از کلاس استفاده نکردم که مشکلی نیست نه؟؟؟؟
توی MainActivity.java این کد رو قرار دادم،،، مشکلی که نیست؟؟؟


 

 


بله، ولی مشکل این است که شرط برای if صادق بوده (یعنی آنچه انتظار داریم) و دستور مربوط به else اجرا نمیشده. break رو باید در if ذکر می کردید (البته کاری به ماهیت کدها ندارم که آیا اجرای انها با حلقه while درست بوده یا نه، بلکه تنها در مورد ساختار حلقه while صحبت کردم). 

 به هر حال من تست کردم و مطمئنم که مشکل توی این قسمت هست که در کد پایین مشاهده می کنید:
کد پی‌اچ‌پی:
if (netInfo != null && netInfo.isConnected()) {
            try {
                
URL url = new URL("mylink" mx);
                
HttpURLConnection urlc = (HttpURLConnectionurl.openConnection();
                
urlc.setConnectTimeout(3000);
                
urlc.connect();
                if (
urlc.getResponseCode() == 200) {
                    
                    
int t Integer.parseInt(mx);
                    
1;
                    
mx Integer.toString(t);
                }
                else{
                    
Toast.makeText(getApplicationContext(), "no"Toast.LENGTH_LONG).show();
                    
                }
            } catch (
MalformedURLException e1) {
                
// TODO Auto-generated catch block
                
e1.printStackTrace();
            } catch (
IOException e) {
                
// TODO Auto-generated catch block
                
e.printStackTrace();
            }
        } 

درواقع من میخوام توی این قسمت، یک لینک چک بشه که کد دسترسی 200 رو میده یا نه... جور دیگه ای باید بنویسمش؟؟؟؟ به نظرم مشکل توی قسمت try ایجاد شده... لطفاً یاری برسونید چطور بنویسم که try حذف بشه؟؟
اصلاً من بخوام یه دستور شرطی بنویسم که کد ریسپانس 200 یک لینک رو چک کنه بدون هیچ چیز اضافی چطور باید بنویسم؟؟؟
 
حداقل یه نفر بهم بگه این try چیه؟؟؟ تا حالا آشنایی باهاش پیدا نکردم
(۱۳۹۳/۱۱/۱۲, ۱۱:۳۰ ب.ظ)'kousha.nikkar' نوشته: [ -> ]حداقل یه نفر بهم بگه این try چیه؟؟؟ تا حالا آشنایی باهاش پیدا نکردم
 

در این موارد، بهتر است در عنوان کلیدها (مبحث ها جستجو) کنید.
دو کلید زیر را بخوانید :

کلید شماره 345

کلید شماره 2844

ممنون از ارسال لینک کلید های مربوط به try
حالا میتونم درک کنم قضیه چیه...
ببینید با توجه به کلید بالا و چند تا آزمایش متوجه شدم که کد زیر ، وقتی در try قرار میگیره ، اون رو به قسمت catch میبره و نمیزاره ادامه کد ها اجرا بشن...
اینو چیکار کنم؟؟؟؟ آخه چه مشکلی توی این کد هست؟
کد پی‌اچ‌پی:
URL url = new URL("لینک");
                                
HttpURLConnection urlc = (HttpURLConnectionurl.openConnection();
                                
urlc.setConnectTimeout(3000);
                                
urlc.connect(); 

لطفاً بهم بگید مشکل چی هست دوستان