0

У меня есть 3 пункта меню в панели действий, когда я нажимаю на любую из них данные, полученные из webservice, которая работает нормально. но при восстановлении мне нужно показать диалог «Прогресс» на экране. Я пробовал разные способы, например, запускать в новом потоке AsyncTask. Но, наконец, застрял. Пожалуйста, кто-нибудь может мне помочь. Вот мой полный код.Невозможно отобразить диалоговое окно «Прогресс», когда элемент меню панели действий нажмите

import hello.aws.graph.BatteryGraph; 

public class BatteryGraph extends AppCompatActivity { 

    static ProgressDialog dialog = null; 
    static String value; 
    public static Menu menu; 

    static ArrayList<TrackingBean> Battery; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 



     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_line_chart); 

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


    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     Intent newIntent; 


     switch (item.getItemId()) { 



      case R.id.bb_menu_favorites: 


        value="favorites"; 
        getData(value); 

        getSupportFragmentManager().beginTransaction().replace(R.id.container, new PlaceholderFragment()).commit(); 
       break; 

      case R.id.bb_menu_mylist: 

        value="mylist"; 
        getData(value); 

        getSupportFragmentManager().beginTransaction().replace(R.id.container, new PlaceholderFragment()).commit(); 

       break; 

      case R.id.bb_menu_recents: 

        value="myrecents"; 
        getData(value); 

        getSupportFragmentManager().beginTransaction().replace(R.id.container, new PlaceholderFragment()).commit(); 

       break; 

     } 
     return true; 
    } 
    public void getData(final String value) 
    { 

     AsyncCallWS task = new AsyncCallWS(); 
     try { 
      task.execute().get(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (ExecutionException e) { 
      e.printStackTrace(); 
     } 
    } 

    /** 
    * A fragment containing a line chart. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     private LineChartView chart; 
     private LineChartData data; 


     public PlaceholderFragment() { 


     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      setHasOptionsMenu(true); 


      View rootView = inflater.inflate(R.layout.fragment_line_chart, container, false); 

      chart = (LineChartView) rootView.findViewById(R.id.chart); 



      generateData(); 


      return rootView; 
     } 


     private void generateData() { 


     /****This method used to Plot points on graph ****/ 




    } 
    } 

    private class AsyncCallWS extends AsyncTask<Void, Void, Void> { 


     @Override 
     protected void onPreExecute() { 

      dialog = new ProgressDialog(BatteryGraph.this, R.style.MyTheme); 

      dialog.setProgressStyle(android.R.style.Widget_ProgressBar_Small); 

      dialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.cp_bar)); 

      dialog.setCancelable(false); 
      dialog.show(); 
      getSupportFragmentManager().beginTransaction().replace(R.id.container, new PlaceholderFragment()).commit(); 



     } 

     @Override 
     protected Void doInBackground(Void... params) { 

      Battery=WebService.getDataFromWS(value); 

      return null; 

     } 

     @Override 
     protected void onPostExecute(Void result) { 

      if(dialog!=null||dialog.isShowing()) { 
       dialog.dismiss(); 
      } 

     } 
    } 



} 

activity_line_chart.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="hello.aws.graph.BatteryGraph" 
tools:ignore="MergeRootFrame" /> 

fragment_line_chart.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="hello.aws.graph.BatteryGraph$PlaceholderFragment" > 
<LinearLayout 
android:id="@+id/l1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin1top" 
android:orientation="vertical"> 
<lecho.lib.hellocharts.view.LineChartView 
    android:id="@+id/chart" 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

</lecho.lib.hellocharts.view.LineChartView> 
</LinearLayout> 
</RelativeLayout> 

ответ

0

я надеюсь, что это поможет у ...

private class AsyncCallWS extends AsyncTask<Void, Void, Void> { 


    @Override 
    protected void onPreExecute() { 

pDialog = new ProgressDialog(getActivity());//here activity name or if u are using fragment put getActivity() 
     pDialog.setMessage("Loading..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.setCanceledOnTouchOutside(false); 
     pDialog.show(); 
     getSupportFragmentManager().beginTransaction().replace(R.id.container, new PlaceholderFragment()).commit(); 



    } 

    @Override 
    protected Void doInBackground(Void... params) { 

     Battery=WebService.getDataFromWS(value); 

     return null; 

    } 

    @Override 
    protected void onPostExecute(Void result) { 

     if(dialog!=null||dialog.isShowing()) { 
      pDialog.dismiss(); 
     } 

    } 
} 
+0

pDialog = новый ProgressDialog (getActivity()); getActivity() не отображается в intellisense. getactivity undefined. –

+0

замените getActivity() на yourActivityName.this –

+0

@SrinivasSarda, что случилось, решили вашу проблему –

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

  • Нет связанных вопросов^_^