![](/img/trans.png)
[英]How do I use Intent for working perfekt in Android Studio (solved)
[英]Android Studio how to do an Intent function with Fragments
我在“活動擴展片段”中有此功能,我想讓波頓在onClick中調用此功能,但是當我單擊此按鈕時,應用程序關閉,並且在“運行”框中顯示“ java.lang.IllegalStateException:找不到方法misanuncios( )在android:onClick屬性的父級或祖先上下文中,該屬性在ID為'btn_misanuncios'的視圖類android.support.v7.widget.AppCompatButton上定義
public class HomeFragment extends Fragment {
private FirebaseAuth.AuthStateListener mAuthListener;
private Button btnLogOut, btnmisanuncios;
private int CAMERA_REQUEST_CODE = 0;
private ProgressDialog progressDialog;
// private StorageReference mStorage;
//private ImageView imageProfile;
private TextView textName;
private FirebaseAuth mAuth = FirebaseAuth.getInstance();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
public HomeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//PON TITULO BAR
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Perfil");
//AGAFAR VALORS XML EN FRAGMENTS
View view = inflater.inflate(R.layout.fragment_home, container, false);
final TextView textName = (TextView) view.findViewById(R.id.txtName);
final TextView textEmail = (TextView) view.findViewById(R.id.txtEmail);
//final TextView Name_nav = (TextView) toolbar.findViewById(R.id.Name_nav);
// PARA ACCEDER FIREBASE DATABASE POSAR PRIMER FUNCIO CREAR PRIMER
//final TextView Name_nav = (TextView) headerView.findViewById(R.id.Name_nav);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Usuarios").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final String name = dataSnapshot.child("name").getValue(String.class);
final String email = dataSnapshot.child("email").getValue(String.class);
//System.out.println(name);
textName.setText(name);
textEmail.setText(email);
//Name_nav.setText(name);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(eventListener);
//CERRAR SESION CON BOTON
btnLogOut = (Button) view.findViewById(R.id.btn_logout);
btnLogOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAuth.getCurrentUser() != null)
mAuth.signOut();
Intent intent = new Intent(getActivity(), LoginActivity.class);
startActivity(intent);
}
});
return view;
}
public void misanuncios(View view) {
Intent intent2 = new Intent(getActivity(), HomeFragment.class);
startActivity(intent2);
}
public void ajustes(View view) {
}
public void contacto(View view) {
}
@Override
public void onPause() {
super.onPause();
}
}
錯誤在於此功能:
public void misanuncios(View view) {
Intent intent2 = new Intent(getActivity(), HomeFragment.class);
startActivity(intent2);
}
btn_misanuncios是按鈕的ID:
<Button
android:id="@+id/btn_misanuncios"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:onClick="misanuncios"
android:text="Mis Anuncios"
tools:ignore="OnClick" />
每當您具有Fragment時,如果要通過僅定義android:onClick
屬性來定義Click偵聽器,則必須在調用HomeFragment的實際活動中定義一個具有相同名稱的方法。
https://stackoverflow.com/a/18896666/886148
否則,您可以像這樣簡單地以編程方式實現點擊監聽器。 (沒有運行代碼,但是您了解了邏輯)
public class HomeFragment extends Fragment {
private FirebaseAuth.AuthStateListener mAuthListener;
private Button btnLogOut, btnmisanuncios;
private int CAMERA_REQUEST_CODE = 0;
private ProgressDialog progressDialog;
// private StorageReference mStorage;
//private ImageView imageProfile;
private TextView textName;
private FirebaseAuth mAuth = FirebaseAuth.getInstance();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
public HomeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//PON TITULO BAR
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Perfil");
//AGAFAR VALORS XML EN FRAGMENTS
View view = inflater.inflate(R.layout.fragment_home, container, false);
final TextView textName = (TextView) view.findViewById(R.id.txtName);
final TextView textEmail = (TextView) view.findViewById(R.id.txtEmail);
//final TextView Name_nav = (TextView) toolbar.findViewById(R.id.Name_nav);
// PARA ACCEDER FIREBASE DATABASE POSAR PRIMER FUNCIO CREAR PRIMER
//final TextView Name_nav = (TextView) headerView.findViewById(R.id.Name_nav);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Usuarios").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final String name = dataSnapshot.child("name").getValue(String.class);
final String email = dataSnapshot.child("email").getValue(String.class);
//System.out.println(name);
textName.setText(name);
textEmail.setText(email);
//Name_nav.setText(name);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
uidRef.addListenerForSingleValueEvent(eventListener);
//CERRAR SESION CON BOTON
btnLogOut = (Button) view.findViewById(R.id.btn_logout);
btnmisanuncios = (BUTTON) VIEW.findViewById(R.id.btn_misanuncio)
btnLogOut.setOnClickListener(this);
btnmisanuncios.setOnClickListener(this);
btnLogOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAuth.getCurrentUser() != null)
mAuth.signOut();
Intent intent = new Intent(getActivity(), LoginActivity.class);
startActivity(intent);
}
});
return view;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_logout:
// implements your things
break;
case R.id.btn_misanuncio:
Intent intent2 = new Intent(getActivity(), HomeFragment.class);
startActivity(intent2);
default:
break;
}
}
public void ajustes(View view) {
}
public void contacto(View view) {
}
@Override
public void onPause() {
super.onPause();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.