这是我的savedInstaceState代码:
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
savedInstanceState.putStringArrayList("todo_arraylist", Altodo);
Log.v("bundle", "Saved");
super.onSaveInstanceState(savedInstanceState);
}
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if (savedInstanceState != null)
{
Altodo = savedInstanceState.getStringArrayList("todo_arraylist");
Log.v("bundle", "Restored");
}
else
{
Log.v("bundle", "null");
}
setContentView(R.layout.main);
}
Run Code Online (Sandbox Code Playgroud)
日志始终显示"捆绑保存"标记.
但在onCreate方法中,SavedInstanceState始终为null.
我有一个活动A,它调用活动B.在活动B中,当我点击一个按钮时,调用finish(),然后调用活动B的onDestroy()并返回活动A.
根据android文档,在调用on onDestroy之前,将调用onSaveInstanceState(Bundle bundle),其中我执行以下操作.
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
System.out.println("Saving webview state");
Log.d(TAG, "In onsave");
wv.saveState(outState);
}
Run Code Online (Sandbox Code Playgroud)
并且下次从活动A开始活动B,
在oncreate()中,我执行以下操作:
onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if(savedInstanceState != null){
//restore webview
}else {
// code
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在活动B中调用onDestroy之前,永远不会调用onSaveInstanceState方法.任何有关这方面的帮助将不胜感激.
编辑:如果这是不可能的.如果有办法存储webview状态,请告诉我
我注意到在一些编码中人们使用icicle和onCreate方法,我想知道它究竟是什么:
public class About extends Activity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.whatup);
}
Run Code Online (Sandbox Code Playgroud)
这是一回事savedInstanceState吗?
使用intents.log cat捕获5到6张照片后,我的应用程序崩溃了.我无法找到崩溃的原因.请帮帮我.
private void capturePhoto() {
File root = new File(Environment.getExternalStorageDirectory(), "Feedback");
if (!root.exists()) {
root.mkdirs();
}
File file = new File(root, Constants.PROFILE_IMAGE_NAME + ".jpeg");
Uri outputFileUri = Uri.fromFile(file);
Intent photoPickerIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
photoPickerIntent.putExtra("return-data", true);
photoPickerIntent.putExtra("android.intent.extras.CAMERA_FACING", 1);
startActivityForResult(photoPickerIntent, requestCode);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (this.requestCode == requestCode && resultCode == RESULT_OK) {
File root = new File(Environment.getExternalStorageDirectory(), "Feedback");
if (!root.exists()) {
root.mkdirs();
}
File file …Run Code Online (Sandbox Code Playgroud) 我有遇到一些麻烦最近onSaveInstanceState()和onRestoreInstanceState().我有多个活动使用这些方法来保存状态,以防系统清理它们.他们中的大多数都工作,除了一个,我不知道为什么.
具体发生的是:
destroy()不再可见时的所有活动.(这样我就可以证明保存/恢复正常工作.) 我注意到onSaveInstanceState()被调用,onCreate()被调用,但是有一个空包,onRestoreInstanceState()永远不会被调用.
谁看过这个吗?
我刚接触到android.我写了几个程序并在手机上试了一下.当我切换方向时,它就像我的手机重启程序一样.我的所有变量都被重置了.实际上,唯一不重置的是编辑文本视图中的文本.是什么导致这个?我怎么能阻止它?我试过在谷歌和堆栈溢出上看它,但我所看到的是如何通过一起改变视图方向.我甚至尝试在一个程序中使用get text方法设置我的变量,但这不起作用.
我用Apache cordova为Android编写了一个启动器应用程序.这是一个类似于信息亭的应用程序,基本上它工作正常.
不幸的是有一个问题:在某些情况下,Android会强制查杀我的应用并立即重新启动它. - 加载大约需要3秒钟,显示白屏.它开始全新(onPause,onResume不被调用).在日志中我找到:
V/WindowManager( 657): Changing focus from Window{42544288 u0 com.android.settings/com.android.settings.SubSettings} to Window{428ad610 u0 com.android.settings/com.android.settings.SubSettings} Callers=com.android.server.wm.WindowManagerService.addWindow:2665 com.android.server.wm.Session.addToDisplay:163 android.view.IWindowSession$Stub.onTransact:111 com.android.server.wm.Session.onTransact:126
I/WindowManager( 657): Gaining focus: Window{428ad610 u0 com.android.settings/com.android.settings.SubSettings}
...
I/ActivityManager( 657): Force stopping com.myapp.name appid=10119 user=0: clear data
I/ActivityManager( 657): Killing 2639:com.myapp.name/u0a119 (adj 7): stop com.myapp.name
I/ActivityManager( 657): Force finishing activity ActivityRecord{42542218 u0 com.myapp.name/.MainActivity t2}
V/ActivityManager( 657): Broadcast: Intent { act=android.intent.action.PACKAGE_RESTARTED dat=package:com.myapp.name flg=0x10 (has extras) } ordered=false userid=0 callerApp=null
V/ActivityManager( 657): Broadcast: Intent { act=android.intent.action.PACKAGE_DATA_CLEARED dat=package:com.myapp.name flg=0x10 (has extras) } …Run Code Online (Sandbox Code Playgroud) android bluetooth cordova android-4.4-kitkat android-5.1.1-lollipop
在我的班级视图中,手机摄像头将被打开,程序在用户从手机摄像头拍照后显示位图,但同时用户将屏幕旋转到"风景"位图将消失,活动的oncreate()将再次加载然后摄像头将再次打开.
我不知道用onRetainNonConfigurationInstance()或onSaveInstanceState()保存位图.
问题是如何在用户旋转手机之前保存位图(取自手机摄像头),这样即使手机处于横向模式,相同的位图也会在屏幕上显示?
---编辑---添加到AndroidManifest.xml是获取保存状态的好方法吗?
有什么办法可以在用户退出应用程序时保存我的复选框状态(已选中或未选中),这样我可以在应用程序重新启动时重新加载此状态?
@Override
public void onPause()
{
super.onPause();
save(itemChecked);
}
@Override
public void onResume()
{
super.onResume();
checkOld = load();
for (int i = 0 ; i < checkOld.length; i++)
{
notes.ctv.get(i).setChecked(checkOld[i]);
}
}
@Override
public void onRestart()
{
super.onResume();
checkOld = load();
for (int i = 0 ; i < checkOld.length; i++)
{
notes.ctv.get(i).setChecked(checkOld[i]);
}
}
private void save(final boolean[] isChecked) {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
insertState();
for(Integer i = 0; i < isChecked.length; i++)
{
editor.putBoolean(i.toString(), …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,显示活动中的全屏位图.为了提供快速加载时间,我将它们加载到内存中.但是当屏幕改变方向时,我想清除缓存,以便再次使用适合新维度的位图填充它.唯一的问题是,为了做到这一点,我需要检测何时发生方向变化.有谁知道如何检测这个?
我有下一个问题:
当我尝试启动相机时,我可以拍摄照片,甚至将其保存在sdcard上,但是当我准备在设备上显示该照片的路径时,会出现错误。
我的全局变量为2(我使用了1,但最好使用2来确保这是一个奇怪的错误):
private File photofile;
private Uri mMakePhotoUri;
Run Code Online (Sandbox Code Playgroud)
这是我的入门相机功能:
@SuppressLint("SimpleDateFormat")
public void farefoto(int num){
// For naming the picture
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
String n = sdf.format(new Date());
String fotoname = "Immagine-"+ n +".jpg";
//Going through files and folders
File photostorage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File photostorage2 = new File(photostorage, "Immagini");
System.out.println(photostorage+"\n"+photostorage2);
photostorage2.mkdirs();
// My file (global)
photofile = new File(photostorage2, fotoname);
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //intent to start camera
// My URI (global)
mMakePhotoUri = Uri.fromFile(photofile);
new Bundle(); …Run Code Online (Sandbox Code Playgroud) variables android global nullpointerexception android-camera-intent
我有一个关于 Android 中的 Activity Lifecycle 的问题。我想知道,在什么情况下调用 onRestoreInstanceState() 方法?
文档说
“仅当存在要恢复的已保存状态时,系统才会调用 onRestoreInstanceState()”
但我想知道这种情况什么时候会发生。它是否仅适用于屏幕旋转的情况,当前台活动被销毁并重新创建时?