我想实现以下目标:用户单击一个按钮后,将当前布局(主)更改为另一个布局,另一个布局加载了图像。但是我不断收到错误消息说“空对象引用上的虚方法'void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)'”。下面是我的mainactivity.java和'另一个layout'.xml
public class MainActivity extends AppCompatActivity {
private Button mybtn;
private ImageView myimage;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init(){
myimage = (ImageView) findViewById(R.id.imgview);
mybtn = (Button) findViewById(R.id.btn);
mybtn.setOnClickListener(new MyListener());
}
public class MyListener implements View.OnClickListener {
@Override
public void onClick(View v){
switch (v.getId()){
case R.id.btn:
setContentView(R.layout.the_other_layout);
initMap();
}
}
}
public void initMap(){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bmp = null;
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.somepngfile,options);
myimage.setImageBitmap(bmp);
}
}
下面是the_other_layout xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imgview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
/>
</LinearLayout>
编辑:
如果您遇到类似问题,请查看下面的答案
最佳答案
问题在这里:
case R.id.btn:
setContentView(R.layout.the_other_layout);
initMap();
删除这个:
setContentView(R.layout.the_other_layout);
不能在一个Activity中设置两个layout。
编辑
对于全屏 ImageView :
public void initMap(){
myimage.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
myimage.setImageDrawable(R.drawable.your_image);
myimage.setScaleType(ImageView.ScaleType.FIT_XY);
}
关于android - 在 onCreate 中初始化了 imageview 但仍然为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172990/