按下后退按钮时,如何存储应用程序的状态.
当按下后退按钮时,仅onPause()调用但不能onSaveInstanceState在我们可以将数据存储在outState包中的位置.
一个答案可能是sharedPreference但我的问题是它只存储int而不是intArraybundle.
有没有办法明确调用onSaveInstanceState?
我有两个活动,我使用 android:configChanges="keyboardHidden|orientation|screenSize"
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.activity_main);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
}
}
Run Code Online (Sandbox Code Playgroud)
一个主动用于纵向到第二个的横向方向, 但是当方向改变时,活动被加载并且数据丢失
如何保存数据并更改活动方向?
正如问题中所述,我想知道如何保存活动的状态。我的应用程序有一个产品列表,允许用户单击产品,启动第二个活动,显示有关该产品的所有信息。在第二个活动中,用户可以通过按按钮“将产品添加到购物车”。当您按下按钮时,第三个活动开始。它是一个列表视图,显示添加的产品的名称和价格 - 如下面的代码所示。如何保存添加的数据,以便当我返回并添加另一个产品时,它会将其添加到列表视图中已有产品的下方?
我希望问题很清楚,如果没有,请询问,我会添加需要的内容。
提前致谢 :)
package activity_app;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class shopping_cart extends ListActivity {
private ListView lv;
private Intent intent;
private String name;
private String price;
ArrayList<HashMap<String, String>> oslist;
private static final String PROD_PRICE ="price";
private static final String PROD_NAME = "name";
ListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shopping_cart_activity);
getActionBar().setTitle("Ordered Products");
intent = getIntent();
name = intent.getStringExtra("PROD_NAME");
price = intent.getStringExtra("PROD_PRICE");
oslist …Run Code Online (Sandbox Code Playgroud) 我一直在寻找它,我似乎无法将自己包裹在onCreate和Bundles周围.我知道onCreate在程序启动时会被调用,但它会如何传递Bundles以及它们是如何相关的.任何人都可以试着把它变成简单的英语,因为我似乎无法找到它.
谢谢
我想保存应用程序状态,以便能够在另一次启动后恢复它.使用方法onSaveInstanceState并将其保存到Bundle或使用SharedPreferences是否更好?
谢谢
我目前在我的Android应用程序中有一个选项卡屏幕,它从其选项卡中托管其他4个活动.
我按如下方式设置每个标签:
intent = new Intent().setClass(this, LiveActivity.class);
spec = tabHost.newTabSpec("live_tab").setIndicator(getString(R.string.tab_contacts),
res.getDrawable(R.drawable.ic_tab_contacts)).setContent(intent);
tabHost.addTab(spec);
Run Code Online (Sandbox Code Playgroud)
一切正常,但是当我在设备上更改方向时,我会在每个单独的活动中单独处理方向更改,每个活动在XML中也有不同的横向布局.
当我更改设备上的方向时,对于我当前正在进行的活动,更改可以正常工作,但如果我将方向改回(因此将其纵向更改为横向到纵向),那么我的活动似乎会重新加载并重置为其初始状态而非而不是尊重我的onRetainNonConfigurationInstance()方法.
有没有人遇到过这个问题,也许会遇到一个解决方案?
我有以下情况:单击一个按钮时,一个活动(DateActivity)调用另一个活动(ListActivity).那很有效.但是,每次单击该按钮时,似乎都会创建一个新的ListActivity副本.如果需要,如何让它恢复最后一个ListActivity或创建一个新的ListActivity?
注意:我目前正在使用ListActivity startActivity(intent);
我是Android开发的新手,但我对OOP概念有一些了解.我试图从Java角度学习Android.

我知道第9行savedInstanceState内部onCreate()是Bundle类的声明.在第10行,我们onCreate()从超类调用方法.
这是我不解释的内容:在第10行,我们将savedInstanceState本身作为参数传递给onCreate()方法.这对我来说没有意义,因为我希望传递一个Bundle类型的对象,但是我们将一个引用而不是类型为Bundle的对象传递给方法.
当我通过Intent BundleExtra创建它时,我将一个布尔值传递给我的Activity.现在查看活动生命周期,如果我的活动停止(onStop),那么另一个应用程序需要内存,以便应用程序进程被终止,然后用户导航到activity(onCreate).最后的onCreate会包含我传递的原始布尔值吗?我想如果我想保存布尔值我需要保存它OnSaveInstanceState,对吗?
我有一个离线在线应用程序,我发现它有一个奇怪的问题,可能不是,但我不明白它.
应用程序要求是,如果互联网可用,即使从启动应用程序或恢复,我调用webservices并在sqlite中存储数据,否则app停留在离线模式,
我有2个活动,第二个活动包含一个id,我通过意图(这一点很重要),
我的问题:
如果我在第二个活动,并且互联网正在运行,我按下主页按钮,然后这第二个活动暂停,然后停止这是Android中的默认行为,我转到设置,关闭wifi,然后再次按应用程序图标回到我的应用程序,这里我感到困惑,我希望我的应用程序现在将在onResume,但是当我在logcat中看到它的onCreated调用和应用程序崩溃时,会发生nullPointerException,因为这个第二个活动没有那个id,我通过了意图..
注意:
如果我使用最近的应用程序按钮进入"设置",然后在turing wifi关闭后再次返回,并重复所有这些行为,然后正常工作,其onResumes称为oncreate ..
我的问题
为什么它会进入onCreate而我的期望是在我从应用程序图标回来时是onResume?