View Full Version : عمل نکردن کدها در fragment
mr_ayma
یک شنبه 19 مهر 1394, 00:45 صبح
سلام به استادان و سروران گرامی
من دو مشکل با فرگمنت دارم اول اینکه ، 5 باتن دارم که میخوام وقتی رو اونا کلیک شد این اتفاق بیقته ، یعنی مشخص بشه که کدوم باتن کلیک شده ، تو فایل Xml هم رویداد onclic
رو برابر ButtonOnClick قرار دادم ، همین شیوه داخل اکتویتی انجام می ده ، ولی نمی دونم چرا اینجا (داخل فرگمنت ) مشکل داره ، زمانی که برنامه رو اجرا می کنم و باتن ها کلیک میشن
خطا صادر میشه ..
public void ButtonOnClick(View v) {
switch (v.getId()) {
case R.id.btn1:
find_click_btn.btn_click_number = 1;
break;
case R.id.btn2:
find_click_btn.btn_click_number = 2;
case R.id.btn3:
find_click_btn.btn_click_number = 3;
case R.id.btn4:
find_click_btn.btn_click_number = 4;
case R.id.btn5:
find_click_btn.btn_click_number = 5;
break;
}
بیشتر از مشکل بالایی داستان عم انگیز اینکه ، من نمی دونم چطور بر اساس شرط از داخل فرگمنت جاری ، یه فرگمنت دیگه رو صدا بزنم
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_entekhab_dars, container, false);
}
مثلا این onCreateView رو جایی که لازم داشتم صدا بزنم (تو سایت های خارجی که گفته بودن روش درستی نیست ، ولی راه حلی هایی هم که اونا گفتن من درک نکردم .. )
به قول این دوستان خارجی استک : im a beginner in Android applications ، لطفا یه مقدار ساده تر بهم توضیح بدین البته اگه توضیح دادین !
کلهم دو مشکل دارم :
چطور از فرگمنت جاری به فرگمنت دیگه ای برم
چرا رویداد کلیک هم به صورت بالا و هم به صورت لیسنر داخل فرگمنت عمل نمی کنه
اینم کد فرگمنتی که دارم (فرضا" میخوام اگر باتن سه فشرده شد، فرگمنت انتخاب درس برم به فرگمنت گزارش )
package com.ketabsoft.schoolt.app.ViewPagerFragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.ketabsoft.schoolt.app.R;
import com.ketabsoft.schoolt.app.SharedData;
import android.view.View.OnClickListener;
import android.widget.TextView;
/**
* A simple {@link Fragment} subclass.
*/
public class EntekhabDarsFragment extends Fragment {
SharedData find_click_btn=new SharedData();
public EntekhabDarsFragment() {
// Required empty public constructor
find_click_btn.btn_click_number=1;
}
public void ButtonOnClick(View v) {
switch (v.getId()) {
case R.id.btn1:
find_click_btn.btn_click_number = 1;
break;
case R.id.btn2:
find_click_btn.btn_click_number = 2;
case R.id.btn3:
find_click_btn.btn_click_number = 3;
case R.id.btn4:
find_click_btn.btn_click_number = 4;
case R.id.btn5:
find_click_btn.btn_click_number = 5;
break;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_entekhab_dars, container, false);
}
}
mr_ayma
یک شنبه 19 مهر 1394, 16:53 عصر
از کدهای این صفحه (http://stackoverflow.com/questions/23212162/how-to-move-from-one-fragment-to-another-fragment-on-click-of-a-imageview-in-and)هم استفاده کردم ، توفیری نداشت
کجایید دوزتان ، یعنی اینجا کسی با فرگمنت ها اشنایی نداره ؟!
hosseinaryai
یک شنبه 19 مهر 1394, 21:14 عصر
متد زیر برای حرکت بین فرگمت هاست ..
public static void onShow_Fragment(FragmentActivity frag
,Fragment myFragment){
frag.getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frm_home, myFragment)
.commit();
}
و نحوه استفاده اش توی فرگمنت :
onShow_Fragment(getActivity(),new Fragment1());
و برای کلیک کردن هم :
View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.f_addcar, container, false);
Button btn1 = v.findviewbyid(R.id.btn1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
return v;
}
mr_ayma
دوشنبه 20 مهر 1394, 00:23 صبح
متد زیر برای حرکت بین فرگمت هاست ..
public static void onShow_Fragment(FragmentActivity frag
,Fragment myFragment){
frag.getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frm_home, myFragment)
.commit();
}
و نحوه استفاده اش توی فرگمنت :
onShow_Fragment(getActivity(),new Fragment1());
و برای کلیک کردن هم :
View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.f_addcar, container, false);
Button btn1 = v.findviewbyid(R.id.btn1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
return v;
}
متاسفانه با کد شما هم جواب نگرفتم ، خطا نمی ده آ اما تو همون فرگمنت اولی می مونه ..
hosseinaryai
دوشنبه 20 مهر 1394, 06:12 صبح
البته من توی نحوه استفاده یه کوچولو اشتباه نوشتم .. باید این بشه :
onShow_Fragment(getActivity(),new Fragment2());
توی ورودی دوم باید نام فرگمنت دوم نوشته شه
mr_ayma
دوشنبه 20 مهر 1394, 13:43 عصر
ممنونم ولی اونم دیشب تست کرده بودم بازم نشد ، من همه کدها رو اینجا می نویسم شاید شما متوجه اشتباهم شدین
دیزاین فرگمنت انتخاب درس
<LinearLayout
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:orientation="vertical"
android:background="@android:color/white"
android:id="@+id/select_lesson"
tools:context="com.mysite.school.app.ViewPagerFragment.EntekhabDa rsFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:padding="10dp"
android:minHeight="150dp">
<TextView
android:id="@+id/entekhab_dars_main_text"
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="@color/red"
android:text="با کلیک روی نام باتن مورد نظر ، جلسات مربوطه نمایش داده خواهد شد "
<ImageView
android:id="@+id/entekhab_dars_main_image"
android:layout_width="80dp"
android:layout_marginLeft="10dp"
android:layout_height="80dp"
android:src="@drawable/ic_toch"/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<Button android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:minHeight="46dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/selector_button"
android:textColor="@android:color/white"
android:text="جلسه اول"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/btn1" />
<Button android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:minHeight="46dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/selector_button"
android:textColor="@android:color/white"
android:text="جلسه دوم"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/btn2" />
<Button android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:minHeight="46dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/selector_button"
android:textColor="@android:color/white"
android:text="جلسه سوم
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/btn3" />
<Button android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:minHeight="46dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/selector_button"
android:textColor="@android:color/white"
android:text="جلسه چهارم"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/btn4" />
<Button android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:minHeight="46dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/selector_button"
android:textColor="@android:color/white"
android:text="جلسه پنجم"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/btn5" />
</LinearLayout>
</LinearLayout>
اکتویتی انتخاب درس
package com.mysite.school.app.ViewPagerFragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.mysite.school.app.R;
import com.mysite.school.app.SharedData;
import android.view.View.OnClickListener;
import android.widget.TextView;
import com.mysite.school.app.ViewPagerFragment.GozareshFr agment;
/**
* A simple {@link Fragment} subclass.
*/
public class EntekhabDarsFragment extends Fragment {
SharedData find_click_btn=new SharedData();
public EntekhabDarsFragment() {
}
View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
v = inflater.inflate(R.layout.fragment_entekhab_dars, container, false);
Button btn1 = (Button) v.findViewById(R.id.btn1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TextView t = (TextView) getView().findViewById(R.id.entekhab_dars_main_tex t);
// t.setText("1 Is selecred"); // این تیکه کد وقتی از کامنت در میاد عمل می کنه
// معنی اش اینکه کد کلیک کار می کنه
// اما چرا خط پایین اجرا نمیشه و به فرگمنت گزارش سوئیچ نمیشه
onShow_Fragment(getActivity(), new GozareshFragment());
}
});
return v;
}
public static void onShow_Fragment(FragmentActivity frag
,Fragment myFragment){
frag.getSupportFragmentManager()
.beginTransaction()
.replace(R.id.select_lesson, myFragment)
.commit();
}
}
دیزاین گزارش
<LinearLayout 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:background="@android:color/white"
android:orientation="vertical"
android:id="@+id/Replort_lesson"
tools:context="com.mysite.school.app.ViewPagerFragment.GozareshFr agment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:padding="10dp"
android:minHeight="150dp">
<TextView
android:id="@+id/gozaresh_main_text"
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="@color/red"
android:text="گزارش جلسات"/>
<ImageView
android:id="@+id/rahnema_main_image"
android:layout_width="80dp"
android:layout_marginLeft="10dp"
android:layout_height="80dp"
android:src="@drawable/ic_report"/>
</LinearLayout>
<TextView
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/secondary_text"
android:scrollbars="vertical"
android:id="@+id/gozaresg_text"
android:background="#fff5f5f5"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
اکتویتی گزارش
package com.mysite.school.app.ViewPagerFragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import com.mysite.school.app.R;
/**
* A simple {@link Fragment} subclass.
*/
public class GozareshFragment extends Fragment {
public GozareshFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_gozaresh, container, false);
}
}
hosseinaryai
دوشنبه 20 مهر 1394, 14:08 عصر
الان اکتیویتی اصلی پس کوش ؟
فرگمنت به تنهایی نمی تونه یه اکتیویتی باشه
یه اکتیویتی می سازی که extend بشه از FragmentActivity
روی دیزاینشم یه دونه FrameLayout با ای دی frm_home می سازی ..
حالا توی متد onCreate اکتیویتی ، با همون متدی که گذاشتم فرگمنت اولیتو صدا می زنی .. توی فرگمنت اول هم زمانی که بخوای از بین اکتیویتی ها حرکت کنی بازم از همون متدی که گذاشتم استفاده می کنی ..
الان یه نمونه کد می نویسم واست می فرستم ..
hosseinaryai
دوشنبه 20 مهر 1394, 14:24 عصر
http://up.persianscript.ir/do.php?filename=15ea-Fragment.rar
فایلای اکتیویتی و لایه هاست .. ببین اگه متوجه نشدی بگو بیشتر توضیح بدم
(http://up.persianscript.ir/do.php?filename=15ea-Fragment.rar)
mr_ayma
دوشنبه 20 مهر 1394, 20:05 عصر
http://up.persianscript.ir/do.php?filename=15ea-Fragment.rar
فایلای اکتیویتی و لایه هاست .. ببین اگه متوجه نشدی بگو بیشتر توضیح بدم
(http://up.persianscript.ir/do.php?filename=15ea-Fragment.rar)
از لطف و زحمتی که کشدین ممنونم ، سورس رو براتون ارسال کردم ..
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.