setOnClickListener (новый OnClickListener () не работает во фрагменте
Я работаю над фрагментами навигационного ящика .Andi копирует код действия в фрагменты для выполнения во фрагменте . Я сделал это , макет виден ,но ни одно действие кнопки не работает под действием этого фрагмента.
вы можете сказать мне, что я сделал неправильно ?
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("seriouslife@gmail.com") +
"?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();
}
}
активность
<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>**
5 ответов
инициализировать виджеты ur, как это.
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);
используйте представление вместо использования getactivity()
, ваш получите вид из раздутого вида, поэтому используйте view
dateimg = (ImageView) view.findViewById(R.id.img);
вместо этого,
dateimg = (ImageView) getActivity().findViewById(R.id.img);
изменить аналогично для всех виджетов.
изменения:
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);
до
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);
ваш текущий вид view
, и вам нужно инициализировать свое представление, как указано выше, или вы можете переопределить onViewCreate () и использовать view
на
на месте
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);
вам нужно инициализировать
mail = (Button)view.findViewById(R.id.btnMail);
как с помощью getActivity().команду findViewById(...) u вызывают метод вашей деятельности, в то время как вам нужно caal то же самое для вашего frafment.
изменить все View.OnClickListener()
to View.OnclickListener()
:
fb.setOnClickListener(new View.OnclickListener() {
@Override
public void onClick(View v) {
}
});