2015-07-30 3 views
0

Все работает, и я добавил свой метод, чтобы проверить, есть ли интернет-соединение, и если нет активности изменения. Но он меняет активность непосредственно перед загрузкой индикатора выполнения. Где я должен добавить этот метод, поэтому загружается первый индикатор выполнения и если нет подключения к Интернету, измените действие.Где я должен добавить свой метод для noInternetConnection? Android

Также, если у кого-то есть предложение об этом подключении к Интернету, я бы appricieate любой ответ.

Это моя деятельность, где я использую этот метод:

public class ListaPreporuka extends AppCompatActivity { 
// Log tag 
private static final String TAG = ListaPreporuka.class.getSimpleName(); 

// Movies json url 
private static final String url = "http://www.nadji-ekipu.org/wp-content/uploads/2015/07/movies.txt"; 
private ProgressDialog pDialog; 
private List<Movie> movieList = new ArrayList<Movie>(); 
private ListView listView; 
private CustomListAdapter adapter; 
private static String Title ="title"; 
private static String bitmap ="thumbnailUrl"; 

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

    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setHomeButtonEnabled(true); 
    getSupportActionBar().setDisplayUseLogoEnabled(true); 
    getSupportActionBar().setLogo(R.drawable.ic_horor_filmovi_ikonica); 

    Intent newActivity2=new Intent(); 
    setResult(RESULT_OK, newActivity2); 

    listView = (ListView) findViewById(R.id.list); 
    adapter = new CustomListAdapter(this, movieList); 
    listView.setAdapter(adapter); 

    pDialog = new ProgressDialog(this); 
    // Showing progress dialog before making http request 
    pDialog.setMessage("Učitavanje..."); 
    pDialog.show();  

    // Creating volley request obj 
    JsonArrayRequest movieReq = new JsonArrayRequest(url, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 
        hidePDialog(); 

        // Parsing json 
        for (int i = 0; i < response.length(); i++) { 
         try { 

          JSONObject obj = response.getJSONObject(i); 
          Movie movie = new Movie(); 
          movie.setTitle(obj.getString("title")); 
          movie.setThumbnailUrl(obj.getString("image")); 
          movie.setRating(((Number) obj.get("rating")) 
            .doubleValue()); 
          movie.setYear(obj.getInt("releaseYear")); 

          // Genre is json array 
          final JSONArray genreArry = obj.getJSONArray("genre"); 
          ArrayList<String> genre = new ArrayList<String>(); 
          for (int j = 0; j < genreArry.length(); j++) { 
           genre.add((String) genreArry.get(j)); 
          } 
          movie.setGenre(genre); 

          // adding movie to movies array 
          movieList.add(movie); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         }       

        } 

        // notifying list adapter about data changes 
        // so that it renders the list view with updated data 
        adapter.notifyDataSetChanged(); 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
        hidePDialog(); 

       } 
      }); 

    noInternet(); 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(movieReq); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      String name = ((TextView) view.findViewById(R.id.title)) 
        .getText().toString(); 

      bitmap = ((Movie)movieList.get(position)).getThumbnailUrl(); 

      Intent intent = new Intent(ListaPreporuka.this, MoviesSingleActivity.class);  
      intent.putExtra(Title, name); 
      intent.putExtra("images", bitmap); 
      intent.putExtra("Year", movieList.get(position).getYear());    
      startActivity(intent); 
      overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 
      } 
     }); 

} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    hidePDialog(); 
} 

private void hidePDialog() { 
    if (pDialog != null) { 
     pDialog.dismiss(); 
     pDialog = null; 
    } 
} 

//WHERE SHOULD I ADD THIS METHOD FOR MAKING MY ACTIVITY SHOW FIRST PROGRESS BAR AND IF THERE IS NO INTERNET CONNECTION, SHOW ANOTHER ACTIVITY 
private void noInternet() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo info = cm.getActiveNetworkInfo(); 
    if (info != null) { 
     if (!info.isConnected()) { 
     } 
    } 
    else { 
     Toast.makeText(this, "No Internet Connection", Toast.LENGTH_SHORT).show(); 
     Intent intent = new Intent(ListaPreporuka.this, NoConnection.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
     overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    if (item.getItemId() == android.R.id.home) { 
     finish(); 
     overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
     return true; 
    } 
    return false; 
} 

@Override 
public void onBackPressed() { 

    super.onBackPressed(); 
    overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
} 

ответ

0

Вы делаете какой-то запрос HTTP. Итак, вы хотите сказать, есть ли доступ к Интернету? Итак, сначала поставьте чек, если доступно интернет-соединение.

Везде, где вы делаете ваши другие операции ..

if(internet connection is present){ 
    //make http request; 
}else{ 
    // display appropriate message and switch to your new activity 
} 
+0

Посмотрите на мой метод noInternet ниже .. –

+0

в вашем onCreate(), ниже вашего вызова pDialog.show(), если вы хотите отобразить, индикатор выполнения сначала, а затем проверьте подключение к Интернету. Однако, я бы не стал показывать диалог прогресса без необходимости сначала, прежде чем совершать какие-либо вызовы. Лучше сначала проверить подключение к Интернету и, если присутствует, то и работа. Кроме того, перед тем, как перейти к следующему действию, убедитесь, что вы отменили диалог прогресса, иначе ваше приложение выйдет из строя. – Ankita

0

Вы можете назвать свой метод в том же месте, но с некоторой задержкой, если вы хотите простой ответ. Что-то вроде этого:

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    //Do something after 100ms 
    } 
}, 100); 

Но, я думаю, вы должны лучше использовать эту method, чтобы показать диалоговое окно:

public static ProgressDialog show (Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable, DialogInterface.OnCancelListener cancelListener) 

Реализовать DialogInterface.OnCancelListener, вызовите ваше намерение с переходом к новой деятельности в OnCancel обратного вызова OnCancelListener.

И используйте pDialog.cancel() в другом выражении метода noInternet().

+0

Я немного путаюсь здесь. Я уже установил диалог, и я хотел бы сначала показать это диалоговое окно, а затем, если нет подключения к Интернету, измените действие, например, я инициализирую свой метод. –

+0

Что касается примера Handler, вы можете просто включить код обработчика вместо вашего вызова noInternet() в метод onCreate(). Вроде: 'final Handler handler = new Handler(); Метод ' система будет вызывать прогон(); handler.postDelayed (новый Runnable() { @Override общественности недействительным запуска() { // Сделать что-то после того, как 100мс noInternet();} }, 100) в обработчике с заявленной задержкой, чтобы ваши взгляды успели отобрать. – comrade

+0

Хорошо. И в методе run для вызова класса Intent для изменения активности, если нетInternet. И еще один вопрос. Где exatcly я должен положить обработчик? До json или после? –

Смежные вопросы