布局更改时字符串值不会更改

时间:2015-02-03 19:45:26

标签: java android variables android-xml

我有两个布局landscapeportrait,其中我设置了TextView值,如下所示:

景观:

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="5" />

肖像:

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="2" />

我正在访问TextView这样的值:

1

public class GridFragment extends Fragment {
public static TextView tv;
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
tv = (TextView) rootView.findViewById(R.id.textView1);
}
}

2

public class AppConst {    
    public static String str = (String) GridFragment.tv.getText();
    public static final int NUM_OF_COLUMNS = Integer.parseInt(str);
}

现在的问题是我只接受TextView值的单次旋转,但如果我改变旋转视图,则值不会改变。

我想说的是,如果我在纵向模式下运行应用程序,我将获得 2列数,但如果现在将轮换从纵向更改为横向,则值现在应为5 < / strong>但值仍为 2,应该从2更改为5.

我的意思是它第一次获得价值但是当屏幕旋转时它不会改变价值。

我想要的是:当屏幕为纵向值时应为2,当屏幕为横向值时应为5。

请注意我不是在谈论在屏幕上显示值,而是在讨论将值从xml发送/传递给String。

我在谈论更改/更新此方法中的值:public static String str = (String) GridFragment.tv.getText(); public static final int NUM_OF_COLUMNS = Integer.parseInt(str);

从特定屏幕模式获取当前值。

1 个答案:

答案 0 :(得分:1)

我认为你的问题是:

public static final int NUM_OF_COLUMNS = Integer.parseInt(str);

final实际上意味着一旦设置它就会保持值

解决这个问题:
不要使用常量类...这是错误的approch,它取决于你想做什么。
保存Bundle savedInstanceState中的值或将数据保存在SharedPreferences

请注意,默认方向更改上重新创建孔视图,以便执行完整的创建生命周期