gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:08:30 29 4
gpt4 key购买 nike

我在 SO 上看到了一些相关问题,但我无法解决我的问题。我为纵向和横向模式创建了单独的布局。

我已经针对相应的方向更改修改了 AndroidManifest.xml 文件,但是当我在 Activity 中实现它时 onConfigurationChanged() 不起作用。

现在问题出在 onCreate() 中的 layout.addView(graphView, lp);。我在 GraphView 类中编写了绝对硬编码值。

所以它在纵向模式下工作得很好,但是当我切换到横向模式时,graphView 没有正确放置。

为了解决这个问题,我创建了专门为 LANDSCAPE 模式编码的 GraphViewLand 类。但它不会从 onConfigurationChanged() 中调用。

布局的其余部分非常完美,因为我为每个方向创建了单独的 main.xml 文件。但是由于 graphView 是通过编程方式创建的,所以它没有被正确放置。

我是不是做错了什么?

我刚从 here 读到这篇文章:

对于您所说的在那里处理的任何类型的配置更改,您将收到对当前 Activity 的 onConfigurationChanged(Configuration) 方法的调用,而不是重新启动。 但是,如果配置更改涉及您未处理的任何内容, Activity 仍将重新启动并且不会调用 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);
}

onConfigurationChanged() 方法

public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();

Log.v("LAND", "SCPAE");
}
}

任何帮助适用:)

最佳答案

如果您在 xml 中创建两种不同类型的 View (横向和纵向)并且您必须在不同类型的 View 上编写逻辑,那么不要在 list 中使用 android:configChanges

如果您在 list 中没有android:configChanges,并且您有不同的横向和纵向布局集,那么当您更改方向时,您的控件将转到 onCreate() 在该方法中,您可以编写逻辑。

关于java - onConfigurationChanged() 未在方向更改时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8532614/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com