gpt4 book ai didi

安卓添加 View

转载 作者:行者123 更新时间:2023-11-30 03:00:55 24 4
gpt4 key购买 nike

我在替换 View 时遇到问题。

这是我的 View 容器:

Container View
--> newMethod 0
--> savedMethod 0
--> savedMethod 1
[...]
--> newMethod 1
--> savedMethod 0
[...]

目前,我有两个 newNethod View 和一些 saveMethod View 。

我想更改已单击的 savedMethod View 。这是代码

savedMethod.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
mSelectedViewIndex = ((ViewGroup) v.getParent()).indexOfChild(v);
mSelectedView = v;
mSelectedViewClicked = (LinearLayout) inflater.inflate(R.layout.component_saved_method_container_01_selected,null);

((ViewGroup) v.getParent()).removeView(v);

((ViewGroup) v.getParent()).addView(mSelectedViewClicked, mSelectedViewIndex);
// ((ViewGroup) saveMethod.getParent()).addView(mSelectedViewClicked, mSelectedViewIndex);
[...]

我检测到,我的 addView 行产生了空指针异常:

03-21 14:36:33.608: E/AndroidRuntime(13192): java.lang.NullPointerException
03-21 14:36:33.608: E/AndroidRuntime(13192): at com.xxxx.xxxx.view.NativeProfileFragment$4.onClick(NativeProfileFragment.java:326)
03-21 14:36:33.608: E/AndroidRuntime(13192): at android.view.View.performClick(View.java:4633)
03-21 14:36:33.608: E/AndroidRuntime(13192): at android.view.View$PerformClick.run(View.java:19330)
[...]

如果我将此行更改为以下内容:

((ViewGroup) saveMethod.getParent()).addView(mSelectedViewClicked, mSelectedViewIndex);

然后更改生效。但是只针对最后添加的newMethod(1) saveMethods。如果我现在单击 newMethod (0) 中的 saveMethod,那么我的代码将获得正确的索引并替换索引上 newMethod (1) 中的 savedMethod。这似乎合乎逻辑,因为我使用 saveMethod.getParent()。但是我如何才能使用所有新方法来完成这项工作呢?

非常感谢您的帮助!

最佳答案

我解决了这个问题。

我将 ViewParent v.parent() 保存在一个变量中并使用它。

这是最终代码:

savedMethod.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
mSelectedViewIndex = ((ViewGroup) v.getParent()).indexOfChild(v);
mSelectedView = v;
mSelectedViewParent = v.getParent();
mSelectedViewClicked = (LinearLayout) inflater.inflate(R.layout.component_saved_method_container_01_selected,null);

((ViewGroup) mSelectedViewParent).removeView(v);
((ViewGroup) mSelectedViewParent).addView(mSelectedViewClicked, mSelectedViewIndex);
// ((ViewGroup) saveMethod.getParent()).addView(mSelectedViewClicked, mSelectedViewIndex);
[...]

现在可以了。但是我不明白为什么如果不将 ViewParent 存储在变量中就无法工作。

关于安卓添加 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22560631/

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