У меня есть 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>
pDialog = новый ProgressDialog (getActivity()); getActivity() не отображается в intellisense. getactivity undefined. –
замените getActivity() на yourActivityName.this –
@SrinivasSarda, что случилось, решили вашу проблему –