我在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
我的活动上有一个复选框.我想知道每次打开我的应用程序时如何使其状态保持不变(选中/取消选中).
来自Android SDK的这个页面
默认实现通过在层次结构中具有 id 的每个视图上调用 onSaveInstanceState() 并保存当前聚焦视图的 id(所有这些都由onRestoreInstanceState(Bundle) 的默认实现)。
那么有没有一种机制可以自动保存Activity状态而不保存Activity中每个元素的值呢?我对上面的说法感到困惑。
例如,活动 A 调用了活动 B。在活动 B 中,我有复选框、单选按钮等。用户选择他们的选择并单击后退按钮。我正在显示 Activity 此时,我想保存用户选择。当用户再次从活动 A 返回到 B 时,通过单击按钮,我希望看到所有选择都保留下来。我能想到的一种方法是,设置 Intent Flag 以突出 Activity。但我认为不是推荐的方法。
那么是否有一个默认实现来保存状态,根据 SDK 的上述文本?或者我可能解释错了?
在这里第一次发布问题.刚开始编程和编码我的第一个应用程序
我有一个Application类文件,其方法为fetchUpdates():
public synchronized void fetchUpdates() {
String[] mURLs = getURLs();
new DownloadJSONData().execute(mURLs[0], mURLs[1]);
}
Run Code Online (Sandbox Code Playgroud)
DownloadJSONData是asyncTask从服务器获取更新,该onPostExecute方法使用服务器中的JSON数组更新sqlite数据库.
应用程序的不同组件(小部件和活动)调用此方法以从服务器获取更新以更新数据库.
问题:synchronized方法是否在与UI线程不同的线程上运行?如果是这样,DownloadJSONData将同步fetchUpdates()方法中的代码移动到右边应该没有问题吗?如果在连接服务器或从服务器下载数据时存在滞留,它不应该阻止UI线程吗?
动机:我正在尝试更改fetchUpdates()方法以返回指示数据库是否已更新的布尔值.然而,因为它现在是(我认为)fetchUpdates()方法之前完成asyncTask的onPostExecute方法,因此,fetchUpdates()方法不能指明呼叫是否DownloadJSONData()更新数据库.fetchUpdates()如果在调用后更新数据库,我需要调用方法的应用程序组件以不同的方式运行.
PS因为我刚接触编程简单而详细的解释会非常有用.
谢谢!
我可以成功调用activity.onPause()来暂停应用程序.但是当我调用activity.onResume()时,应用程序重新启动.
有办法避免这种情况吗?
编辑
我实际上想要使用暂停按钮暂停我的应用程序
我是Android开发人员的新手.我做了一个小的2D游戏,我想知道存储高分的最简单的方法是什么,所以如果应用程序退出并返回到高分,则从上一个会话中检索.任何帮助,将不胜感激!