我正在做一个访问gprs的应用程序.当用户启动另一个使用gprs的应用程序时,我也面临着问题,如谷歌地图.它拥有自己的堆内存,在地图应用程序上执行某些操作后,它会调用我服务的OnLowMemory.我的ui也在背景中丧生.我没有得到任何适当的教程haw我可以在onLowMemory中杀死它时启动我的应用程序,或者是否有任何其他方法来处理它.
提前致谢.
我有两个活动A,B.现在从A i按下按钮(使用startActivity())调用B ,然后按返回键返回到A. 现在当我再次按下按钮转到B时,会调用新的活动(如预期的那样).
现在有人能告诉我如何显示旧的B状态吗?
我已经阅读了这篇文章 使用保存实例状态保存Android活动状态,但无法帮助自己:(
public class B extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
if(savedInstanceState!=null){
EditText editText=(EditText)findViewById(R.id.editText1);
editText.setText(savedInstanceState.getString("EditBox"));
}
}
@Override
protected void onSaveInstanceState(Bundle onSaveInstanceState) {
System.out.println("B.onSaveInstanceState()");
super.onSaveInstanceState(onSaveInstanceState);
onSaveInstanceState.putString("EditBox","Hello");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
System.out.println("B.onRestoreInstanceState()");
super.onRestoreInstanceState(savedInstanceState);
EditText editText=(EditText)findViewById(R.id.editText1);
editText.setText(savedInstanceState.getString("EditBox"));
}}
Run Code Online (Sandbox Code Playgroud)
我的A级
public class A extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() …Run Code Online (Sandbox Code Playgroud) 我想知道为什么具有2.1-update1的摩托罗拉里程碑与仿真器或Nexus One的行为不同.我试图退出我的应用程序:
@Override
protected void onPause() {
if(mayDestroyActivity) this.finish();
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
这适用于模拟器或Nexus One.onDestroy()在onPause()和之后立即被称为onStop.但不是里程碑.而是onDestroy()在启动另一个Activity时调用.它在Manifest中的部分看起来像这样:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/questionnaire_item"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<category android:name="android.intent.category.OPENABLE" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
有人对此有暗示吗?我的应用程序取决于正确退出,因为我保存了所有进度onDestroy()
谢谢,
斯蒂夫
我是一名长期,自学成才的业余VB程序员,现在正在尝试自学Java和Android.我这样说,所以你会知道我不会说好语言,而且对这两种追求都是非常新的.
我开发了一个Android表单,其中包含一系列EditText框,每个框的内容都要在用户填写后保存到数组中.如果用户按下Enter键,我已经想出了如何做到这一点.但是,人们实际上并没有这样做:他们点击框,键入,然后单击下一个元素.
我VB,我可以为lostfocus事件编写代码.但我在Java中找不到类似的方法.
最后一个问题:是否有一种方法可以捕获EditText失去焦点的时间,因此我可以在不依赖Enter键的情况下保存该类型的类型数据?
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){
Editable wasted=edittext_asset.getText();
vehdata[vehNo][Integer.parseInt((String) edittext_asset.getTag())]=wasted.toString();
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
请记住,我对此很新,我常常不确定在哪里放置代码片段以使它们工作(新文件?oncreate方法?谁知道).您可以给予我任何指导,我将非常感激和永远感激.
在发布此问题之前,我已经看过以下链接
http://www.devx.com/wireless/Article/40792/1954
http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
如果状态是由我的类组成的,如何在Android中的方向更改期间保存状态?
我没有得到如何覆盖以下功能:
@Override
public Object onRetainNonConfigurationInstance() {
return someExpensiveObject;
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我有一个editext可见的布局,当第一个editext的数据验证为true时,其他editext可见.我已将所有其他editextes和textviews的可见性设置为false,并在验证后使它们可见.
因此,在我的活动中,如果更改了屏幕方向,则所有项目都将变为android:visibility="false"不可见.
我也知道当我们的活动屏幕方向改变时,它调用onStop()后跟onDestroy(),然后通过调用onCreate()再次启动一个新活动
这是原因..但我没有得到如何解决它..
在这里您可以看到我的应用程序的屏幕截图:
在此图像中,所有字段都被加载,而在另一个图像中,当屏幕方向变为横向时,它们都消失了

任何教程或代码片段的链接都会非常值得注意.
而且还当我的应用程序崩溃进度对话框显示了,我试图改变屏幕orientation.How来处理这个?
谢谢
我在更改设备配置(更改语言,方向等)后进行了一些测试,我注意到在此之后,方法"notifyDataSetChanged()"无法正常工作.
动作示例:
我每次执行删除,保存等操作时都会调用updateList().用户单击删除按钮,会显示DialogFragment,"您确定要删除吗?",当我更改方向时,或者语言或设备的任何配置,然后在对话框上单击"是",数据将被删除,但列表不会更新.我需要退出活动,然后回去查看更改.
BookAdapter:
public void updateList(ArrayList<Book> books) {
bookList = books;
notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
在配置更改后,我该怎么做才能使它工作?
编辑:
BookAdapter构造函数:
public BookAdapter(Context c, ArrayList<Book> books) {
context = c;
bookList = books
bookDAO = BookDAO.getInstance(context);
}
Run Code Online (Sandbox Code Playgroud)
BookFragment:
public class BookFragment extends Fragment {
private BookDAO bookDAO;
private BookAdapter bookAdapter;
private ListView listBook;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
bookDAO = bookDAO.getInstance(getActivity());
view = inflater.inflate(R.layout.book_tab, container, false);
ArrayList<Book> listBook = null;
try {
llistBook = bookDAO.getAll();
} …Run Code Online (Sandbox Code Playgroud) 我糊涂了.
我有一个布局(LinearLayout)持有TextView和EditText.在我的代码的某处,我创建(以编程方式)RelativeLayout并将其中的几个LinearLayout推入其中.对于其中的每一个,我为TextView和EditText设置ID和值.
问题是当我改变屏幕方向时.所有EditText控件都获得相同的值(来自上一个EditText).如果我设置断点一切似乎都没问题.我甚至在调用setContentView之前检查了所有元素,并且所有值看起来都很好.
任何的想法?
这是代码的相关部分:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
csWgs84 = getCoordinateSystem();
wgs84C = getCoordinates();
sView = new ScrollView(this);
layout = getLayoutInflater().inflate(R.layout.location_calculator, null);
View control1 = getLayoutInflater().inflate(R.layout.text_edit, null);
control1.setId(1);
TextView title1 = (TextView) control1.findViewById(R.id.title);
title1.setText(csWgs84.axisInfo.yAxisAbbreaviation + " [°] :");
EditText value1 = (EditText) control1.findViewById(R.id.input);
value1.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
value1.setText(cutValue(RSimpleFormatter.formatNumber(wgs84C.y, 1, 7, '.'), 12));
RelativeLayout.LayoutParams viewLayoutParams1 = new RelativeLayout.LayoutParams
(RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT );
viewLayoutParams1.addRule(RelativeLayout.BELOW, group.getId());
((RelativeLayout) layout).addView(control1, viewLayoutParams1);
View control2 = getLayoutInflater().inflate(R.layout.text_edit, null);
control2.setId(2);
TextView title2 = (TextView) control2.findViewById(R.id.title);
title2.setText(csWgs84.axisInfo.xAxisAbbreaviation + …Run Code Online (Sandbox Code Playgroud) 我在SO上看到了一些相关问题,但我无法解决我的问题.我为PORTRAIT和LANDSCAPE模式创建了单独的布局.
我已经修改了AndroidManifest.xml文件以进行相应的方向更改,但是onConfigurationChanged()当我在活动中实现它时,它不起作用.
现在问题出在layout.addView(graphView, lp);了onCreate().我在GraphView课堂上写了绝对的硬编码值.
所以它完全适用于PORTRAIT模式,但是当我切换到LANDSCAPE模式时,graphView没有正确放置.
为了解决这个问题,我创建了GraphViewLand专门为LANDSCAPE模式编码的类.但它并没有被召唤出来onConfigurationChanged().
其余的布局完美无缺,因为我main.xml为每个方向创建了单独的文件.但由于graphView是以编程方式创建的,因此未正确放置.
我在这里做错了吗?
我刚从这里读到这个:
对于任何类型的配置更改,您说您在那里处理,您将收到对当前活动的onConfigurationChanged(配置)方法的调用,而不是重新启动.但是,如果配置更改涉及您未处理的任何内容,则仍将重新启动活动并且不会调用onConfigurationChanged(Configuration).
onCreate()方法
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
RelativeLayout layout = (RelativeLayout) findViewById(R.id.MainLayout);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_TOP, btnindex.getId());
GraphView graphView = new GraphView(this, values, "CurrentGraph",
horlabels, verlabels);
layout.addView(graphView, lp);
}
Run Code Online (Sandbox Code Playgroud)
onConfigurationChanged()方法
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", …Run Code Online (Sandbox Code Playgroud) java android orientation relativelayout onconfigurationchanged
我有一个非常简单的程序,带有微调器和toggleButton.当按钮打开时,我禁用微调器,并在我关闭时启用.我遇到一个问题,意味着在屏幕旋转期间重新启用微调器.我理解这是由于活动状态的改变和onCreate被再次调用,但我没有在这样的实例中遇到关于视图状态的最佳实践的确定答案.
注意:我发现的与此相关的最相关的SO问题如下.所有3都讨论了如何处理状态更改(onPause/OnResume与overriding onSaveInstanceState),但似乎没有人明白哪个是这样简单的首选选项.
我的问题是关于Whatsapp在聊天时保存对话的方式,所以,如果我关闭whatsapp并打开它,我最后的对话和尚未备份的消息会出现......即使我发了一封信(一个字符) ),关闭应用程序并打开它,我会找到这封信!! whatsapp在哪里保存这些对话.并恢复他们......
我们不讨论数据库备份.