从静态布局中删除视图? (空指针)
Posted
技术标签:
【中文标题】从静态布局中删除视图? (空指针)【英文标题】:Remove View from static Layout? (Nullpointer) 【发布时间】:2016-11-06 02:35:17 【问题描述】:由于某种原因,我无法从静态 RelativeLayout 中删除视图。布局在活动内部是静态的,所以我可以从每个视图访问它。当我删除例如我的 IntroView 通过。 MainActivity.layout.removeView(this),一切正常,但是当我对我的 LevelView (MainActivity.layout.removeView(this)) 执行相同操作时,我得到一个 Nullpointer,LevelView(或布局?)= null,但那是很奇怪,因为它在 onCreate 中被初始化,就像 IntroView 一样,但由于某种原因它在 IntroView 中工作?
谢谢,我希望你明白我的意思。
package catgames.lineland;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.RelativeLayout;
import com.azilen.locationbasedreminder.R;
import catgames.framework.Music;
import catgames.views.HudView;
import catgames.views.IntroView;
import catgames.views.Level1;
import catgames.views.Level2;
public class MainActivity extends Activity
// Layout
public static RelativeLayout layout;
// Current Screen
public static String screen;
// Views
public static IntroView introview;
public static HudView hudview;
// Level
public static Level1 level1;
public static Level2 level2;
// Music
public static Music music;
// Context
public static Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
// Context
context = this;
// Layout
layout = new RelativeLayout(this);
layout.setBackgroundResource(R.drawable.backdrop);
setContentView(layout);
// Level
introview = new IntroView();
hudview = new HudView();
level1 = new Level1();
level2 = new Level2();
// Screen
screen = "IntroView";
// Layout
layout.addView(introview);
layout.addView(hudview);
layout.addView(level1);
// Music
music = new Music(R.raw.music);
music.setLooping(true);
music.play();
【问题讨论】:
把你的代码和.xml放在这里 您可以简单地隐藏它而不是删除它以避免空异常。 是的,我也有同样的想法,但是去掉它不是更好吗?以及如何正确隐藏它以使 onDraw 不刷新? 顺便说一句,我不使用 .xml,一切都是程序化的 此时看起来更像 Layout 为空。贴一些代码伙伴 【参考方案1】:好的,我只是做了以下操作: this.setVisibility(this.GONE);
【讨论】:
以上是关于从静态布局中删除视图? (空指针)的主要内容,如果未能解决你的问题,请参考以下文章
活动到片段通信:当我尝试从活动更新片段中的文本视图时,出现空指针异常
findViewById() 在与合并标签一起使用时在包含标签上抛出空指针