簡體   English   中英

Android Studio如何使用片段執行Intent函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM