Android 安卓系统中的按钮
我的android应用程序中有一系列按钮,当我使用调试器查看程序是否正常工作时,我看到了这条消息Android 安卓系统中的按钮,android,Android,我的android应用程序中有一系列按钮,当我使用调试器查看程序是否正常工作时,我看到了这条消息 No such instance field: 'btnEmail' 这是我的片段,名为ContactoFragment.java: public class ContactoFragment extends Fragment { Button btnEmail, btnFacebook, btnTwitter, btnGooglePlus; @Override publi
No such instance field: 'btnEmail'
这是我的片段,名为ContactoFragment.java:
public class ContactoFragment extends Fragment {
Button btnEmail, btnFacebook, btnTwitter, btnGooglePlus;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
RelativeLayout rootview = (RelativeLayout) inflater.inflate(R.layout.fragment_contacto, container, false);
btnEmail = (Button) rootview.findViewById(R.id.btnEmail);
btnEmail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentEmail = new Intent(Intent.ACTION_SEND);
intentEmail.setType("text/plain");
intentEmail.putExtra(Intent.EXTRA_EMAIL,"atellez@iesnervion.es");
intentEmail.putExtra(Intent.EXTRA_SUBJECT,"Nueva sugerencia");
}
});
btnTwitter = (Button) rootview.findViewById(R.id.btnTwitter);
btnTwitter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
btnFacebook = (Button) rootview.findViewById(R.id.btnFacebook);
btnFacebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
btnGooglePlus = (Button) rootview.findViewById(R.id.btnGooglePlus);
btnGooglePlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
return rootview;
}
}
这是我的fragment_contacto.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="es.laramira.atellez.moroninfo.Fragments.ContactoFragment">
<TextView
android:id="@+id/txtSuggest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¿Tienes alguna sugerencia? :)"
android:textSize="22sp"
android:textAlignment="center"
android:textStyle="bold"
android:textColor="#000"
android:layout_marginTop="60dp"
android:layout_centerHorizontal="true"/>
<Button
android:id="@+id/btnEmail"
android:drawableLeft="@drawable/ic_email"
android:text="Email"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@+id/txtSuggest"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:backgroundTint="#757575"/>
<Button
android:id="@+id/btnFacebook"
android:drawableLeft="@drawable/ic_facebook"
android:text="Facebook"
android:layout_marginTop="20dp"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@+id/btnTwitter"
android:layout_alignLeft="@+id/btnTwitter"
android:layout_alignStart="@+id/btnTwitter"
android:backgroundTint="#3F51B5"/>
<Button
android:id="@+id/btnTwitter"
android:drawableLeft="@drawable/ic_twitter"
android:text="Twitter"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_below="@+id/btnEmail"
android:layout_alignLeft="@+id/btnEmail"
android:layout_alignStart="@+id/btnEmail"
android:backgroundTint="#2196F3"/>
<Button
android:id="@+id/btnGooglePlus"
android:drawableLeft="@drawable/ic_google_plus"
android:text="Google+"
android:layout_marginTop="20dp"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@+id/btnFacebook"
android:layout_alignLeft="@+id/btnFacebook"
android:layout_alignStart="@+id/btnFacebook"
android:backgroundTint="#F44336"/>
</RelativeLayout>
有什么问题?正确的解决方案是什么?检查R.java代码,看看您的btnEmail是否有任何价值。如果您没有更新R,或者xml有一些错误,则可能会导致此问题,或者如果您使用的是pro guard,则混淆是真的。您必须注释掉buildgradle中的混淆。例如:将此添加到pro guard-dontobfuscate中
因此,请重新构建,并查看包addres、xml或dependecies错误是否存在问题。尝试重新启动您的Android studio并重建您的项目。也许您将btnEmail用于其他xml文件,并且有一个大型项目,Android Studio由于日志无法找到使用btnEmail的用户。试着重新启动你的android studio 您需要重命名xml文件中按钮的id。因为xml接受小写和下划线。同样的
android:id=“@+id/btnFacebook”
到android:id=“@+id/btn\u facebook”
使用下面的代码作为参考
public class ContactoFragment extends Fragment {
Button btnEmail, btnFacebook, btnTwitter, btnGooglePlus;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view =
inflater.inflate(R.layout.fragment_contacto, container, false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initalizeLayout(view);
}
private void initalizeLayout(View view) {
btnEmail = (Button) view.findViewById(R.id.btnEmail);
btnEmail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentEmail = new Intent(Intent.ACTION_SEND);
intentEmail.setType("text/plain");
intentEmail.putExtra(Intent.EXTRA_EMAIL,"atellez@iesnervion.es");
intentEmail.putExtra(Intent.EXTRA_SUBJECT,"Nueva sugerencia");
}
});
btnTwitter = (Button) view.findViewById(R.id.btnTwitter);
btnTwitter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
btnFacebook = (Button) view.findViewById(R.id.btnFacebook);
btnFacebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
btnGooglePlus = (Button) view.findViewById(R.id.btnGooglePlus);
btnGooglePlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
}
我发现这个答案可以解决你的问题,有些答案说事件发生在你的活动中,而不是片段中,你把OnClickListener放在那里:
检查R.java代码,看看您的btnEmail是否有任何值。如果您没有更新R或xml有一些错误,可能会导致此问题。您使用的是proguard吗?@MichaelKrause我没有使用proguard