如果按下android后退按钮,请不要打开第二个活动

如果按下android后退按钮,请不要打开第二个活动,android,Android,我正在尝试实现下面的代码,每件事都很好地工作 这就是我面临的情况 mainactivity只有一个按钮可以打开splashactivity splash活动执行解析部分,然后打开ListActivity 我的工作流是用户是否单击了主活动中的按钮 它打开启动活动并重定向到列表活动 如果用户单击 ANDROID back(返回)按钮返回主活动,但是 splashactivity中的解析继续,用户被重定向到 listactivty当用户启动时,这种事情不应该发生 活动已单击backbutton,它应返

我正在尝试实现下面的代码,每件事都很好地工作 这就是我面临的情况

mainactivity只有一个按钮可以打开splashactivity splash活动执行解析部分,然后打开ListActivity 我的工作流是用户是否单击了主活动中的按钮 它打开启动活动并重定向到列表活动 如果用户单击 ANDROID back(返回)按钮返回主活动,但是 splashactivity中的解析继续,用户被重定向到 listactivty当用户启动时,这种事情不应该发生 活动已单击backbutton,它应返回到mainactivity 自己呆在那里 如何做到这一点

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(主活动)并停留在那里