【问题标题】:findViewById(R.id.screen) returns nullfindViewById(R.id.screen) 返回 null
【发布时间】:2016-09-18 15:20:05
【问题描述】:

当用户拖动搜索栏时,我正在尝试更改应用的背景颜色。

我已经推荐了以下链接:Set Background color programmatically

我在OnSeekBarChangeListener() 中有以下代码:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    View someView = findViewById(R.id.screen);
    View root = someView.getRootView();
    root.setBackgroundColor(Color.argb(255, r[progress], g[progress], b[progress]));
}

这会导致以下崩溃:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' on a null object reference

主要活动类:

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setRandomcolors();
        setbuttonclicklistener();
        seebar();
    }

OnSeekBarChangeListener() 是从seebar() 调用的

【问题讨论】:

  • 您的屏幕布局是否相同?
  • 您没有ID为screen的视图
  • @KDeogharkar 我怎么知道?
  • 将 ID 添加到您的布局 (activity_main)。 android:id="@+id/screen"
  • 您尝试过 someView=activity.getCurrentFocus().getRootView() 吗?

标签: java android android-studio view seekbar


【解决方案1】:

您将 someView 设置为 null。所以它给出了空指针异常。

尝试改变,

 View someView = findViewById(R.id.screen);

 View someView = (View)findViewById(R.id.screen);

你能发布你的完整 xml 代码吗?

【讨论】:

  • 我觉得他把null值转成'View'真的没关系?
  • 可以使用:if (someView != null),但你可能需要这个:View daddy = (View) (findViewById(R.id.screen)).getParent();
猜你喜欢
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多