SetOnClickListener (nuevo OnClickListener () no funciona en Fragment

Estoy trabajando en fragmentos de NAVigation Drawer. Andi copiar el código de Actividad a fragmentos para ejecutar en fragmento. He hecho eso, el diseño es visible, pero ninguna de las acciones del botón funciona bajo esa actividad de fragmentos.

¿Puedes decirme qué hice mal?

FragmentTwo.java

public class FragmentTwo extends Fragment { Button blog,fb,twitter,mail; ImageView dateimg; private boolean snet; public FragmentTwo() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.contact_lay,container, false); System.out.println("Kaks7"); dateimg = (ImageView) getActivity().findViewById(R.id.img); blog= (Button) getActivity().findViewById(R.id.btnGplus); fb = (Button) getActivity().findViewById(R.id.btnFb); twitter = (Button)getActivity().findViewById(R.id.btnTwitter); mail = (Button)getActivity().findViewById(R.id.btnMail); System.out.println("K17"); new LongOperation().execute(); return view; } private class LongOperation extends AsyncTask<Void, Void, Void> { protected void onPreExecute() { } @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub return null; } @Override protected void onPostExecute(Void result) { try{ fb.setOnClickListener(new OnClickListener() { public void onClick(View vb) { try{ System.out.println("7"); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://profile/10000003242252")); startActivity(intent); }catch(Exception e){ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://m.facebook.com/facebook"))); } } }); twitter.setOnClickListener(new OnClickListener() { public void onClick(View vc) { try { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?screen_name=dhoom")); startActivity(intent); }catch (Exception e) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://mobile.twitter.com/#!/dhoom"))); } } }); blog.setOnClickListener(new OnClickListener() { public void onClick(View va) { System.out.println("7s"); try { System.out.println("5s"); String url = "http://google.com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); } catch(Exception e){ System.out.println("6s"); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"))); } } }); mail.setOnClickListener(new OnClickListener() { public void onClick(View va) { try { Intent send = new Intent(Intent.ACTION_SENDTO); String uriText = "mailto:" + Uri.encode("[email protected]") + "?subject=" + Uri.encode("the subject") + "&body=" + Uri.encode("the body of the message"); Uri uri = Uri.parse(uriText); send.setData(uri); startActivity(Intent.createChooser(send, "Send mail...")); } catch(Exception e){ Toast.makeText(getActivity().getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show(); // this.progressDialog.dismiss(); } } }); dateimg.setOnClickListener(new OnClickListener() { public void onClick(View va) { if(snet==false) { soundstart(); snet=true; } } }); } catch(Exception e){ //Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show(); } } } public void soundstart() { // TODO Auto-generated method stub MediaPlayer mplayer =MediaPlayer.create(getActivity(),R.raw.contact_sound); mplayer.start(); } } 

Actividad

 <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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:background="@drawable/abc"> <RelativeLayout android:layout_width="wrap_content" android:id="@+id/text" android:orientation="vertical" android:gravity="center" android:layout_gravity="center" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:gravity="center" android:paddingTop="-30dp" android:text="© iamrajkaran || Raj Karan" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#FFFFFF" android:textSize="20sp" android:textStyle="bold" /> </RelativeLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:background="@drawable/linearlayout_bg" android:orientation="vertical" android:layout_marginTop="30dp" android:padding="7dp" > <Button android:id="@+id/btnGplus" style="@style/ButtonText" android:layout_width="fill_parent" android:layout_height="48dp" android:layout_margin="4dp" android:background="@drawable/layers_blog_button_bg" android:padding="10dp" android:text="Know me on my blog" /> <Button android:id="@+id/btnFb" style="@style/ButtonText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:background="@drawable/layers_fb_button_bg" android:padding="10dp" android:text="Join me on facebook" /> <Button android:id="@+id/btnTwitter" style="@style/ButtonText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:background="@drawable/layers_twitter_button_bg" android:padding="10dp" android:text="Follow me on twitter" /> <Button android:id="@+id/btnMail" style="@style/ButtonText" android:layout_width="match_parent" android:layout_height="48dp" android:layout_margin="4dp" android:background="@drawable/layers_mail_button_bg" android:padding="10dp" android:text="Mail Your Feedback" /> </LinearLayout> <RelativeLayout android:layout_width="fill_parent" android:id="@+id/texwt" android:orientation="vertical" android:gravity="bottom" android:layout_gravity="center" android:layout_marginTop="240dp" android:layout_height="wrap_content" > <ImageView android:id="@+id/img" android:layout_width="180dp" android:layout_height="180dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:gravity="center" android:paddingLeft="30dp" android:paddingRight="0dp" android:src="@drawable/ic_form" /> </RelativeLayout> <TextView android:id="@+id/textView2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center" android:layout_marginTop="40dp" android:text="Touch Me" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#FFFFFF" android:textSize="22sp" android:textStyle="bold" /> </RelativeLayout>** 

Initilize widgets como este.

  dateimg = (ImageView) view.findViewById(R.id.img); blog= (Button) view.findViewById(R.id.btnGplus); fb = (Button) view.findViewById(R.id.btnFb); twitter = (Button) view.findViewById(R.id.btnTwitter); mail = (Button) view.findViewById(R.id.btnMail); 

Utilizar la vista en lugar de utilizar el getactivity() , su obtener la vista de inflar vista, así que utilice la view

 dateimg = (ImageView) view.findViewById(R.id.img); 

En lugar de usar esto,

 dateimg = (ImageView) getActivity().findViewById(R.id.img); 

Cambia igual para todas las vistas de widgets.

cambio:

 dateimg = (ImageView) getActivity().findViewById(R.id.img); blog= (Button) getActivity().findViewById(R.id.btnGplus); fb = (Button) getActivity().findViewById(R.id.btnFb); twitter = (Button)getActivity().findViewById(R.id.btnTwitter); mail = (Button)getActivity().findViewById(R.id.btnMail); 

a

 dateimg = (ImageView) view.findViewById(R.id.img); blog= (Button) view.findViewById(R.id.btnGplus); fb = (Button) view.findViewById(R.id.btnFb); twitter = (Button)view.findViewById(R.id.btnTwitter); mail = (Button)view.findViewById(R.id.btnMail); 

Su vista actual es view , y necesita inicializar su vista como la anterior o puede sobrescribir onViewCreate () y usar view en eso

en lugar de

 dateimg = (ImageView) getActivity().findViewById(R.id.img); blog= (Button) getActivity().findViewById(R.id.btnGplus); fb = (Button) getActivity().findViewById(R.id.btnFb); twitter = (Button)getActivity().findViewById(R.id.btnTwitter); mail = (Button)getActivity().findViewById(R.id.btnMail); 

Necesitas inicializar

 mail = (Button)view.findViewById(R.id.btnMail); 

Como utilizando getActivity (). FindViewById (…) u están llamando al método de su actividad mientras que usted necesita caal iguales para su frafment.

Cambie todo el View.OnClickListener() a View.OnclickListener() :

  fb.setOnClickListener(new View.OnclickListener() { @Override public void onClick(View v) { } }); 
  • Fragmentos de Z-Layering en Android
  • Pasar los datos de los elementos de los clics hechos por RecyclerView CardView a la actividad
  • ¿Cuál es la diferencia entre commit () y commitAllowingStateLoss () en Fragments
  • Fija la posición del botón en la actividad de los padres cuando el teclado está abierto
  • ¿Los Fragmentos y las Actividades de Fragmentos son inherentemente más rápidos que las Actividades?
  • "Recurso esperado del menú de tipo" al inflar MenuButton
  • Android Fragment: qué método de ciclo de vida utilizar para la llamada de servicio web
  • ¿Cómo comprobar si el cajón de navegación está abierto?
  • SavedInstanceState al restaurar el fragmento de la pila trasera
  • La actividad con fragmentos no cambia de tamaño cuando se abre el teclado
  • Android: setInitialSavedState
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.