【问题标题】:Orientation (at configChanges) change makes my buttons stop work after orientation方向(在 configChanges)更改使我的按钮在方向后停止工作
【发布时间】:2011-12-22 03:32:37
【问题描述】:

我有这个简洁的应用程序......

在 onCreate 时,它​​会相应地绘制“startscreen.xml”:

        super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.startscreen);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
            R.layout.window_title);

在我的应用程序中,清单中有“configChanges="orientation"”。 我有,

    @Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  setContentView(R.layout.startscreen);

}

startscreen.xml 既是横向布局又是纵向布局,两者是分开的。

所以问题在于,应用程序加载正常,按钮工作正常。我切换方向,按钮停止响应...

他们都在使用RelativeLayout...

任何线索,有人吗? :S

编辑:

感谢您的 cmets,现在尝试了,但没有结果:S

    @Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  setContentView(R.layout.startscreen);

    add_note.setOnClickListener(new View.OnClickListener() {
        public void onClick(final View v) {
            createNote();
        }

    });
}

你的意思是onclickListener还是这些:

add_note = (Button) findViewById(R.id.addnote);

?? :S

【问题讨论】:

  • 你在哪里注册你的 onClickListeners?
  • @DreamHawk:如果您将方向切换回原来的方向,按钮会重新开始工作吗?
  • @Squonk,不,他们不这样做:/,我必须关闭并重新打开:/
  • stackoverflow.com/questions/54349531/… 在我的问题上需要帮助

标签: android orientation


【解决方案1】:

如果您将onCreate 中的点击侦听器添加到您的按钮,您需要将侦听器添加到onConfigurationChanged 中创建的新按钮对象。

您可以考虑在 XML 文件中使用 android:onClick 属性,而不是在代码中设置点击侦听器。这是避免这个问题的好方法。

要在 XML 中使用 android:onClick,请执行以下操作:

<Button
    android:id="@+id/addnote"
    android:onClick="addNoteMethod"
    ....
    />

然后在你的活动中,定义方法:

public void addNoteMethod(View view) {
    createNote();
}

android:onClick 方法的名称完全是任意的;它只需要将活动中的方法与正确的签名 (void &lt;method_name&gt;(View)) 匹配。当点击时,该方法将被调用,其方式与为OnClickListener 调用onClick 方法完全相同。

当使用android:onClick 时,您确实不需要调用setOnClickListener(或者甚至检索对onCreate 中按钮的引用,除非您需要它用于其他用途)。 p>

【讨论】:

  • 检查我的编辑,在这种情况下,我如何从 xml-android:onClick 启动像 createNote 这样的函数?
  • @DreamHawk - 回复您的问题更新:您必须再次调用 findViewById 以将 add_note 设置为新按钮实例(旧按钮实例已消失),同时调用 @987654336 @。我将更新我的答案以展示如何在 XML 中使用 android:onClick
  • @MisterSquonk - OP 说 configChanges="orientation" 在清单中。在这种情况下,活动不会被破坏和重新创建。
  • @Ted:抱歉,刚刚发现了——我的错。咖啡还不够。
  • @MisterSquonk - 不用担心 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
相关资源
最近更新 更多