【发布时间】:2021-04-13 12:42:43
【问题描述】:
我对 Android 开发非常陌生。我基本上有一个带有一些按钮的活动,例如“seeTreePicture”和“seeSeaPicture”。当我按下一个按钮时,我想使用我称为“ContentViewer”的片段来显示随机的树/海图片,并且图片下方还有按钮来破坏 ContentViewer 片段实例并返回菜单。问题是,如果我尝试在活动的 onCreate() 以外的任何地方使用 Fragment Transaction,当我尝试访问片段中的视图时会出现空指针异常。
我的活动和与片段相关的事情:
public class SeeActivity extends AppCompatActivity {
DisplayFragment displayFragment;
Button seeTreeButton;
Button seeSeaButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_see);
seeTreeButton = findViewById(R.id.seeTreeButton);
seeSeaButton = findViewById(R.id.seeSeaButton);
displayFragment = new DisplayFragment();
seeTreeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.fragmentContainer, displayFragment);
fragmentTransaction.commit();
fragmentTransaction.addToBackStack(null);
displayFragment.changeImage(randomTree);
}
});
}
}
在我的片段中,更改图像只是更改 ImageView 的图像源:
public void changeImage(int treeResource)
{
img = getView().findViewById(R.id.imageView);
img.setImageResource(treeResource);
}
尝试从片段中的 getView() 访问视图时出现空指针异常,这意味着未调用 onCreateView。但是,如果我将相同的事务放在活动的 onCreate() 方法中,它就可以工作。我做错了什么?
【问题讨论】:
标签: android android-studio android-layout android-fragments android-activity