Ich brauche Hilfe mit einem Fragment onclick Listener für meine logoutButton
. Ich möchte meine gemeinsamen Einstellungen löschen und eine Absicht festlegen. Ich habe eine Menge Fragen zu SO gelesen, aber ich kann damit nicht umgehen. Ich habe es versucht wie in einer Aktivität von meiner App, aber es funktioniert nicht.Griff onclick in Fragmenten in android Studio
Es gibt viele Fehler sind:
- Auf meiner Schaltfläche Erklärung: Kann nicht lösen Methode
findViewById(int)
- Auf mein Setup gemeinsamen Vorlieben: Kann Methode nicht lösen
getSharedPreferences(java.lang.String, int)
- Am
finish()
Aussage: Die Methode kann nicht lösenfinish()
- Bei meinem
new Intent
Konstruktor: Kann KonstruktorIntent(de.myfirstapp.app.SettingsFragment, java.lang.Class<de.myfirstapp.app.LoginActivity>)
nicht auflösen 210
package de.myfirstapp.app;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.TextView;
import static android.content.Context.MODE_PRIVATE;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* {@link SettingsFragment.OnFragmentInteractionListener} interface
* to handle interaction events.
* Use the {@link SettingsFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class SettingsFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
private OnFragmentInteractionListener mListener;
public SettingsFragment() {
// Required empty public constructor
}
//Change the title in action bar
public void onResume(){
super.onResume();
String titleString = getResources().getString(R.string.title_activity_navigation_drawer_settings);
// Set title bar
((NavigationDrawerActivity) getActivity())
.setActionBarTitle(titleString);
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment SettingsFragment.
*/
// TODO: Rename and change types and number of parameters
public static SettingsFragment newInstance(String param1, String param2) {
SettingsFragment fragment = new SettingsFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
//Logout button interaction
Button logoutButton = (Button) findViewById(R.id.logoutButton);
//Set onclick listener for the logout button
logoutButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Deleting shared preferences for login activity
SharedPreferences loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = loginPreferences.edit();
editor.clear();
editor.commit();
finish();
// Launching login activity screen
Intent intentLogout = new Intent(SettingsFragment.this, LoginActivity.class);
SettingsFragment.this.startActivity(intentLogout);
}
;
});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_settings, container, false);
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onStart() {
super.onStart();
try {
mListener = (OnFragmentInteractionListener) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException(getActivity().toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
/**
* This interface must be implemented by activities that contain this
* fragment to allow an interaction in this fragment to be communicated
* to the activity and potentially other fragments contained in that
* activity.
* <p>
* See the Android Training lesson <a href=
* "http://developer.android.com/training/basics/fragments/communicating.html"
* >Communicating with Other Fragments</a> for more information.
*/
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);
}
}
Sie meine onClick-Methode in der onCreate(Bundle savedInstanceState)
Methode finden können. Danke, dass du mir aus der Dunkelheit geholfen hast :)
Der beste Weg, Ihre Fragen zu lösen, zuerst lernen, wie man mit dem Fragment arbeiten und dann den Code aktualisieren. – buzzingsilently
Wie hast du etwas gelernt? Über das machen. Und was mache ich hier? Ich lerne – ItsOdi1
Ich meinte nur, dass Ihre Abfragen nur von Ihnen selbst lösbar sind. Also schauen Sie sich das Tutorial an und Sie werden das Problem verstehen. Entschuldigung, wenn Sie beleidigt waren. – buzzingsilently