如果按下android后退按钮,请不要打开第二个活动
我正在尝试实现下面的代码,每件事都很好地工作 这就是我面临的情况 mainactivity只有一个按钮可以打开splashactivity splash活动执行解析部分,然后打开ListActivity 我的工作流是用户是否单击了主活动中的按钮 它打开启动活动并重定向到列表活动 如果用户单击 ANDROID back(返回)按钮返回主活动,但是 splashactivity中的解析继续,用户被重定向到 listactivty当用户启动时,这种事情不应该发生 活动已单击backbutton,它应返回到mainactivity 自己呆在那里 如何做到这一点如果按下android后退按钮,请不要打开第二个活动,android,Android,我正在尝试实现下面的代码,每件事都很好地工作 这就是我面临的情况 mainactivity只有一个按钮可以打开splashactivity splash活动执行解析部分,然后打开ListActivity 我的工作流是用户是否单击了主活动中的按钮 它打开启动活动并重定向到列表活动 如果用户单击 ANDROID back(返回)按钮返回主活动,但是 splashactivity中的解析继续,用户被重定向到 listactivty当用户启动时,这种事情不应该发生 活动已单击backbutton,它应返
package com.site.name;
public class SplashActivity extends Activity {
RSSFeed feed;
String fileName;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
fileName = "TDRSSFeed.td";
Intent i = getIntent();
int position = i.getExtras().getInt("position");
String[] country = i.getStringArrayExtra("country");
// //public String RSSFEEDURL = "http://blogname.blogspot.com//feeds/posts/default/-/Awards?alt=rss";
Toast.makeText(getApplicationContext(), country[position], Toast.LENGTH_SHORT).show();
//Toast.makeText(getApplicationContext(), country[position], Toast.LENGTH_SHORT).show();
File feedFile = getBaseContext().getFileStreamPath(fileName);
ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() == null) {
// No connectivity. Check if feed File exists
if (!feedFile.exists()) {
// No connectivity & Feed file doesn't exist: Show alert to exit
// & check for connectivity
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(
"Unable to reach server, \nPlease check your connectivity.")
.setTitle("TD RSS Reader")
.setCancelable(false)
.setPositiveButton("Exit",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int id) {
finish();
}
});
AlertDialog alert = builder.create();
alert.show();
} else {
// No connectivty and file exists: Read feed from the File
Toast toast = Toast.makeText(this,
"No connectivity!",
Toast.LENGTH_LONG);
toast.show();
//feed = ReadFeed(fileName);
startLisActivity(feed);
}
} else {
// Connected - Start parsing
new AsyncLoadXMLFeed().execute();
}
}
private void startLisActivity(RSSFeed feed) {
Bundle bundle = new Bundle();
bundle.putSerializable("feed", feed);
// launch List activity
Intent intent = new Intent(SplashActivity.this, ListActivity.class);
intent.putExtras(bundle);
startActivity(intent);
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
// kill this activity
finish();
}
private class AsyncLoadXMLFeed extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// Obtain feed
DOMParser myParser = new DOMParser();
Intent i = getIntent();
int position = i.getExtras().getInt("position");
String[] country = i.getStringArrayExtra("country");
//feed = myParser.parseXml(RSSFEEDURL);
//feed = myParser.parseXml("http://blogname.blogspot.com//feeds/posts/default/-/Awards?alt=rss");
feed = myParser.parseXml("http://blogname.blogspot.com//feeds/posts/default/-/" + country[position] + "?alt=rss");
if (feed != null && feed.getItemCount() > 0)
WriteFeed(feed);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
startLisActivity(feed);
}
}
// Method to write the feed to the File
private void WriteFeed(RSSFeed data) {
FileOutputStream fOut = null;
ObjectOutputStream osw = null;
try {
fOut = openFileOutput(fileName, MODE_PRIVATE);
osw = new ObjectOutputStream(fOut);
osw.writeObject(data);
osw.flush();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onBackPressed() {
//Include the code here
return;
}
}
您可以在MainActivity的onRestart中取消对提要的解析,因为这是MainActivity的一个方法,当您从解析活动中按back时,将调用该方法
您可以阅读有关“活动生命周期”的更多信息。要检测“后退”按钮按下事件,请使用以下方法
@Override
public void onBackPressed() {
// do something on back.
// Change your activity by calling intent
return;
}
如果你想用后退按钮做任何事情,那么你必须手动覆盖它
@Override
Public void onBackPressed() {
//do whatever you want to do as your question is quite confusing.
return;
}
清楚地解释你的活动流程你不清楚你在问什么。。请改进您的问题,以便我们能够理解并为您提供解决方案。我只想检查是否在splash activity中单击了“后退”按钮,然后停止对该按钮本身的解析,而不是转到listactivity,即使我在splash activity中按下了“后退”按钮,也会发生这种情况。Dude,您是想迷惑我们吗请把你的问题编辑清楚,请用点来说明您的活动流程。1 MainActivity只有一个打开splash活动的按钮2 splash活动执行解析部分,然后打开ListActivity 3如果用户单击了main activity中的按钮,我的工作流将打开splash活动并重定向到ListActivity。如果用户单击ANDROID back(返回)按钮,它确实返回到mainactivity(主活动),但是splashactivity中的解析仍在继续,用户被重定向到ListActivity(列表活动)。这种情况不应该发生,当splash activity上的用户单击back(返回)按钮时,它应该返回到mainactivity(主活动)并停留在那里