相关疑难解决方法(0)

在方向更改时未调用onConfigurationChanged()

我在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

2
推荐指数
1
解决办法
4537
查看次数

每次打开我的应用程序时,如何使复选框保持相同状态?

我的活动上有一个复选框.我想知道每次打开我的应用程序时如何使其状态保持不变(选中/取消选中).

android

1
推荐指数
1
解决办法
2544
查看次数

Android SaveInstanceState - 理解

来自Android SDK的这个页面

默认实现通过在层次结构中具有 id 的每个视图上调用 onSaveInstanceState() 并保存当前聚焦视图的 id(所有这些都由onRestoreInstanceState(Bundle) 的默认实现)。

那么有没有一种机制可以自动保存Activity状态而不保存Activity中每个元素的值呢?我对上面的说法感到困惑。

例如,活动 A 调用了活动 B。在活动 B 中,我有复选框、单选按钮等。用户选择他们的选择并单击后退按钮。我正在显示 Activity 此时,我想保存用户选择。当用户再次从活动 A 返回到 B 时,通过单击按钮,我希望看到所有选择都保留下来。我能想到的一种方法是,设置 Intent Flag 以突出 Activity。但我认为不是推荐的方法。

那么是否有一个默认实现来保存状态,根据 SDK 的上述文本?或者我可能解释错了?

android savestate android-activity

0
推荐指数
1
解决办法
6015
查看次数

同步方法是否在与UI线程(Android)不同的线程上运行?

在这里第一次发布问题.刚开始编程和编码我的第一个应用程序

我有一个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()方法之前完成asyncTaskonPostExecute方法,因此,fetchUpdates()方法不能指明呼叫是否DownloadJSONData()更新数据库.fetchUpdates()如果在调用后更新数据库,我需要调用方法的应用程序组件以不同的方式运行.

PS因为我刚接触编程简单而详细的解释会非常有用.

谢谢!

java android synchronized android-asynctask

0
推荐指数
1
解决办法
1511
查看次数

Android activity.onPause()然后activity.onResume()重启应用程序

我可以成功调用activity.onPause()来暂停应用程序.但是当我调用activity.onResume()时,应用程序重新启动.

有办法避免这种情况吗?

编辑

我实际上想要使用暂停按钮暂停我的应用程序

android onresume onpause

-2
推荐指数
1
解决办法
2085
查看次数

如何在我的Android应用程序中存储数据?

我是Android开发人员的新手.我做了一个小的2D游戏,我想知道存储高分的最简单的方法是什么,所以如果应用程序退出并返回到高分,则从上一个会话中检索.任何帮助,将不胜感激!

java android android-studio

-4
推荐指数
1
解决办法
561
查看次数