Beenden einer Aktivität von Fragment
In meiner Anwendung habe ich 2-fragment, Fragment A und Fragment B. Auf diese beiden Fragmente Iam dabei einige XML-parsing-und Auffüllen von listviews.Ich möchte zu implementieren, die einen splash-screen für mein app.So, dass es die Anzeige während der Analyse und der Bevölkerung von listviews und endet, wenn Ihre getan. Für diese habe ich eine Tätigkeit SplashActivity.Ich habe Umgesetzt asyntask auf FragmentA und rief die SplashActivity auf preexecute-Abschnitt.Nun, wenn die app startet SplashActivity loszulegen.Aber ich kann nicht beenden Sie diese Aktivität auf postexecute der FragmentA. getActivity().finishActivity() nicht funktioniert.Bitte jemand mir helfen, dieses Problem zu lösen oder mir empfehlen, eine andere Methode zu implementieren, die Splash-screen auf Fragment-Aktivität. Vielen Dank im Voraus....
hier ist meine FragmentA=>
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//Inflating layout
View v = inflater
.inflate(R.layout.headlines_fragment, container, false);
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.i("Tag", "onCreateView");
//We set clear listener
loading = (ProgressBar) getActivity().findViewById(R.id.progressBar1);
if (Headlines.headflag == "malayalam") {
urls = "http://www.abc.com/rssfeeds/19_18_17_25/1/rss.xml";
}
if (Headlines.headflag == "english") {
urls = "http://www.abc.com/en/rssfeeds/1_2_3_5/latest/rss.xml";
}
new ProgressAsyncTask().execute();
MainActivity.refresh.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new ProgressAsyncTask().execute();
}
});
}
public void populate_listview() {
newsList = new ArrayList<HashMap<String, String>>();
//looping through all song nodes <song>
for (int i = 0; i < nl.getLength(); i++) {
//creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
newsList.add(map);
MarqueeStr = MarqueeStr + " *** " + Title[i];
}
}
public void StartProgress() {
new ProgressAsyncTask().execute();
}
public class ProgressAsyncTask extends AsyncTask<Void, Integer, Void> {
int myProgress;
@Override
protected void onPreExecute() {
//TODO Auto-generated method stub
super.onPreExecute();
myProgress = 0;
Intent intent = new Intent(getActivity(), Splash.class);
startActivityForResult(intent, 5); //Here I called Splash Activity
loading.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Void result) {
//TODO Auto-generated method stub
super.onPostExecute(result);
getActivity().finishActivity(5);//Here I tried to finish flash activity
if (Title == null) {
final AlertDialog.Builder alertbox = new AlertDialog.Builder(
getActivity());
alertbox.setMessage("Error in connection.Do you want to retry");
alertbox.setPositiveButton("retry",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//getActivity().finish();
//Intent intent = new Intent(getActivity(),
//MainActivity.class);
//startActivityForResult(intent,1);
}
});
alertbox.setNegativeButton("exit",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//getActivity().finish();
}
});
alertbox.show();
}
list = (GridView) getActivity().findViewById(R.id.grid);
//Getting adapter by passing xml data ArrayList
adapter = new HeadlinesAdapter(getActivity(), newsList);
list.setAdapter(adapter);
loading.setVisibility(View.INVISIBLE);
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(),
"fonts/karthika.TTF");
MainActivity.flashnews.setText(MarqueeStr);
if (Headlines.headflag == "malayalam") {
MainActivity.flashnews.setTypeface(tf);
}
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent myintent = new Intent(
"com.abc.malayalam2headlinespodcast.PODCAST");
Bundle mybundle = new Bundle();
mybundle.putInt("number", position);
myintent.putExtras(mybundle);
startActivity(myintent);
}
});
}
@Override
protected Void doInBackground(Void... arg0) {
//TODO Auto-generated method stub
parse();
if (Title != null) {
populate_listview();
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
//TODO Auto-generated method stub
}
}
public static void parse() {
//parsing done here
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
nur um die Frage zu beantworten, welches ist dein Titel eigentlich "Zu beenden eine Aktivität von Fragment", es ist immer ein guter Weg, um Schnittstelle zu verwenden, um die Interaktion von Fragment-Aktivität gemäß den docs: Die Kommunikation mit der Aktivität von Fragment. So muss man immer erklären, eine Schnittstelle in Fragment, die umgesetzt werden in Ihrer Aktivität so etwas wie unten:
Sollten Sie nicht setzen Ihre Spritzen als
Activity
sondern alsDialogFragment
. Einfach Stil, dialog-fragment, so dass es angezeigt wird im Vollbildmodus.Betreffend zeigt:
Dann schließen: