【问题标题】:hide activity in android在android中隐藏活动
【发布时间】:2012-05-13 05:19:26
【问题描述】:

我在一个 android 应用程序中有两个活动,每个活动都有一个转到另一个活动的按钮(通过startActivity() 方法)。在第二个活动中,我有一个编辑文本(URL 地址栏)和一个 Web 视图。

所以,当我单击activity1 的按钮启动activity2 时,我会在web 视图中获得activity2。然后我在地址栏中键入cnn.com(例如),我的网络视图显示cnn.com 网站。之后,我单击按钮从活动 2 转到活动 1。 如果我再次点击activity1的按钮,我会启动activity2。但是activity2刚刚创建,我的意思是,编辑文本和web视图都是空的。

我想要的是:如果我从activity1返回到activity2,我希望activity2保持最后的状态:编辑文本应该保持cnn.com并且网络视图应该继续显示CNN网站。 所以我需要的不是在启动activity1之前退出activity2,而是只是隐藏它并启动activity2,这样如果我再次返回它,我就会得到它的最后一个状态。 (比如当我点击主页按钮时。)我怎样才能做到这一点?

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    这里有一个解决您问题的建议。

    当您从活动二中的按钮转到活动一时,请确保当您从活动二移到活动一时,它不应完成活动二。

    现在当你想回到活动二时,你需要像下面这样调用你的活动。

        Intent mIntent=new Intent(yourActivityOne1.this, YourActivity2.class);
        mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        mIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(mIntent);
    

    所以这段代码的作用是让 Activity 先过来而不创建一个新的 Activity 实例,你可以在那里看到你最后加载的网站。

    【讨论】:

    • 看起来很有趣,但是如何“确保当你从活动二移到一时,它不应该完成活动二。”
    • 只需简单地覆盖活动二中的后退按钮键,因为在 android 中,如果您按下后退键,它将完成您的活动。您可以使用此代码 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Intent intent = new Intent(ActivityTwo.this, ActivityOne.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);开始活动(意图); } 返回 super.onKeyDown(keyCode, event); }
    • 当您从活动二移到一时,不要调用完成方法。
    【解决方案2】:

    它不会完成 BackPressed 上的活动,它将表现为主页按钮

    你可以编辑它..它可能有助于不完成

    @Override
    public void onBackPressed()
        {
    
       Log.d("CDA", "onBackPressed Called");
       Intent setIntent = new Intent(Intent.ACTION_MAIN);
       setIntent.addCategory(Intent.CATEGORY_HOME);
       setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       startActivity(setIntent);
       }
    

    【讨论】:

      【解决方案3】:

      我不知道如何隐藏它,但我要做的是将活动 2 中的文本保存到 onPause 方法中的首选项中,并在我创建活动 2 时从首选项中加载数据。

      活动 2 将如下所示:

      onPause(){
          SharedPreferences settings = getSharedPreferences("MyPreferences", MODE_PRIVATE);  
          SharedPreferences.Editor prefEditor = settings.edit();  
          prefEditor.putString("activity2Text", textField.getText().toString());  
          prefEditor.commit(); 
      }
      
      onCreate(){
            .....
          SharedPreferences settings = getSharedPreferences("MyPreferences", MODE_PRIVATE); 
          textField.setText(settings.getString("activity2Text","") );
      }
      

      【讨论】:

      • 由于性能原因,我不想在某处保存数据并重新加载网页,我只想返回上一个状态而不重新加载网页
      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多