Android getViewByID imagebutton返回null
我的xml上有一个imageButton:Android getViewByID imagebutton返回null,android,onclicklistener,imagebutton,findviewbyid,Android,Onclicklistener,Imagebutton,Findviewbyid,我的xml上有一个imageButton: <ImageButton android:layout_width="30dp" android:layout_height="30dp" android:layout_marginTop="10dp" android:id="@+id/star" android:background="@drawable/star" android:layout_below="@+id/releaseDate"
<ImageButton
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginTop="10dp"
android:id="@+id/star"
android:background="@drawable/star"
android:layout_below="@+id/releaseDate"
android:layout_alignLeft="@+id/releaseDate"
android:layout_alignStart="@+id/releaseDate" />
是R.layout.activity\u detail或R.id.container中的ImageButton。ImageButton位于fragment\u detail上,由DetailActivity类调用,如果DetailActivityFragment类不在activity中,则由DetailActivity类调用findViewById(R.id.star)启动。您的片段未在方法OnCreate中创建我无法在DetailActivityFragment中调用findViewById,它未被识别问题是在片段上实现onClick,找到解决方案:ImageButton位于R.layout.activity\u detail或R.id.Container上ImageButton位于fragment\u detail上,由DetailActivity类调用,该类由DetailActivity类启动,如果DetailActivityFragment类不在activity中,则调用findViewById(R.id.star)。您的片段尚未在方法OnCreate中创建我无法在DetailActivityFragment中调用findViewById,无法识别它在片段上实现onClick时出现问题,找到了解决方案:
public class DetailActivity extends AppCompatActivity {
ImageButton ib;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
if(savedInstanceState == null){
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new DetailActivityFragment())
.commit();
ib = (ImageButton)findViewById(R.id.star);
if(ib != null) {
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v(null, "Image Clicked!");
}
});
}
}
}