رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

مشکل در استفاده از interface


پست های پیشنهاد شده

با سلام

من برای ارتباط بین اکتیویتی و فراگمنت از interface استفاده کردم به شکل زیر:

کدهای فراگمنت:

public class Fragment_one extends Fragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.one_fragment, container, false);

        return view;
    }

    public interface message {
        public void showName(int name);
    }


    @Override
    public void onResume(){
        super.onResume();
        //OnResume Fragment
        ((message) getContext()).showName(1);
    }
}

 

و کد های اکتویتی:

 

public class MainActivity extends AppCompatActivity implements
        Fragment_one.message,
        Fragment_two.message,
        Fragment_three.message{

    Toolbar toolbar;
    int fragment_number;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        toolbar.setTitle(getString(R.string.app_name));
  
      
      
        //// مشکل
      
      //// چون خارج از متد showname هست
      /// مقدار name رو نمیگیره
      
        int a =   fragment_number; 
      
        System.out.println("Fragment-Num :" + a);
      
      //// مشکل

    }





    @Override
    public void showName(int name) {

        fragment_number = name;
         /// این چون داخل متد showName هست
      ///مشکلی نداره و کار میده
        System.out.println("Fragment :" + fragment_number);


    }


    }

 

 

کد به خوبی کار میده و مشکل من اینه اون مقدار عددی showName رو وقتی توی  fragment_number خارج از متد showName مقدار رو نمیگیره

اون قسمتی که نوشتم مشکل رو میگم تو کد های اکتیویتی

 

حالا چجور اون مقدار رو خارج از متد بگیرم؟؟

 

لطفا راهنماییم کنید خیلی گیرم

 

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 8 ساعت قبل، aminsh77 گفته است :

دوستان کسی بلد نیست مشکلمو حل کنه؟؟

خیلی گیرم لطفا اگر بلدید کمک کنید

با تشکر

سلام دوست عزیز خوب مشکلتون مشخصه

شما تو این قسمت 

   int fragment_number;

      
        int a =   fragment_number; 

فقط اومدین دوتا متغییر تعریف کردین ولی هیچ مقداری بهش ست نکردین و خوب مسلما این قسمت همیشه خالی هستش. چون نه از جایی مقدار گرفته نه مربوط به یک کلاس یا اینترفیس دیگه هستش که مقدار داشته باشه.صرفا یک متغییر محلی خالی.

ولی قسمت پایین شما اومدین متد showName رو override کردین که میاد مقدار name که بهش میدین میگیره و به fragment_number میده.

کد شما به درستی داره کار میکنه از لحاظ منطقی.

هدف شما از این که به این صورت نوشتین چی بوده و قرار بوده چه کاری انجام بدین؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 10 ساعت قبل، a.khosroabadi گفته است :

سلام دوست عزیز خوب مشکلتون مشخصه

شما تو این قسمت 


   int fragment_number;

      
        int a =   fragment_number; 

فقط اومدین دوتا متغییر تعریف کردین ولی هیچ مقداری بهش ست نکردین و خوب مسلما این قسمت همیشه خالی هستش. چون نه از جایی مقدار گرفته نه مربوط به یک کلاس یا اینترفیس دیگه هستش که مقدار داشته باشه.صرفا یک متغییر محلی خالی.

ولی قسمت پایین شما اومدین متد showName رو override کردین که میاد مقدار name که بهش میدین میگیره و به fragment_number میده.

کد شما به درستی داره کار میکنه از لحاظ منطقی.

هدف شما از این که به این صورت نوشتین چی بوده و قرار بوده چه کاری انجام بدین؟

سلام

ببینید میدونم اون مقداری نداره

الان مشکل اینجاست مقداری name رو خارج متد showname نمیشه استفاده کرد فقط داخل متد showname مقدار رو میشه گرفت 

 

هدف من اینه که وقتی توی اون فراگمنت بودم یک مقدار عددی به اکتیویتی مادر ارسال بشه که دو راه داشتم یا استفاده از shared perfrence یا interface که interface از هر نظر هم منطقی تره هم بهتر

 

الان من میخوام اون مقدار name رو توی اینتیحر خارج از متد showname ذخیره کنم

الان fragment_number فقط داخل متد showname مقدار name رو میگیره و دیگه خارج از اون متد showname خالیه و مقداری نداره

 

اگر لازمه بگید بیشتر توضیح بدم

 

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در واقع بصورت کلی بخوام بگم مقدار name رو میخوام تو جاهای مختلف اکتویتی مادر استفاده کنم مثلا وقتی بک رو زدم از اون مقدار عددی استفاده کنم ولی نمیدونم چجور از متد showname خارجش کنم و جاهای دیگه استفاده کنم

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 18 ساعت قبل، aminsh77 گفته است :

هیچ کس بلد نیست؟

خیلی گیر اینم

خوب فقط کافیه مقدار بازگشتی متد showName تغییر بدین و چیزی که میخواین بزارین مثلا اگه قراره Integer برگرده بزارین 

 public interface message {
        public Integer showName(int name);
    }

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/05/14, 07:30:03، a.khosroabadi گفته است :

خوب فقط کافیه مقدار بازگشتی متد showName تغییر بدین و چیزی که میخواین بزارین مثلا اگه قراره Integer برگرده بزارین 


 public interface message {
        public Integer showName(int name);
    }

 

ببینید الان این با اون کد خودم فرقی نمیکنه دوتاش رو باید Override کرد و فقط داخل

@Override
public Integer showName(int name) {
    fragment_number = name;
    System.out.println("fragg =" + fragment_number);
    return null;
}

مقدار name رو برمیگردونه

من میخوام از مقدار name به شکل زیر استفاده کنم

 

public class MainActivity extends AppCompatActivity implements
        Fragment_one.message,
        Fragment_two.message,
        Fragment_three.message{

    Toolbar toolbar;
    int fragment_number;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        toolbar.setTitle(getString(R.string.app_name));
  
      
      
     
       
      
      

    }





    @Override
    public Integer showName(int name) {

        fragment_number = name;
       
        System.out.println("Fragment :" + fragment_number);


    }
    @Override
    public void onBackPressed() {

            if(fragment_number == 1){
            
             //code
            
            
            }else if(fragment_number == 2){
            
            //code
            
            
            }else if(fragment_number == 3){
            
              
              //code
            
            }
 

            super.onBackPressed();
        }


    }

 

حالا چجوری مقدار name رو توی onBackPressed استفاده کنم ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط Alma
      سلام 
      من یه اکتیویتی (mainActivity)با 3 تا فرگمنت دارم که با bottomNavigationView از یک فرگمنت به فرگمنت بعدی میرم(navigationControler).
      چطور میشه از یکی از فرگمنت ها به اکتیویتی دیگری (secondActivity) رفت.
      fragmentMnager رو هم امتحان کردم .یک بار از فرگمنت به اکتیویتی رفت و بار دوم که امتحان کردم از برنامه خارج شد.
    • توسط SamanH
      با سلام و عرض ادب و خسته نباشید
      یک  سوال مهم داشتم ، خیلی از سایت ها ، آموزش ها ، فیلم ها رو حتی در سایت های خارجی تماشا کردم و هرکدوشون درباره اتصال فرگمنت به Bottombar کتابخانه دیزاین (( Support Design Library))) ی چیز گفته بودن ، و من وقتی اونها را انجام می دادم ، همیشه یک جای کار خراب بود و یجورایی باگ به وجود می اومد..
       
      سوال من اینه که چجوری فرگمنت ها رو به BottomBar متصل کنیم و وقتی رو هرکدومشون کلیک می کنیم ، یک فرگمنت اجرا بشه ، مثل برنامه کافه بازار !!!!!!
       
      ممنون میشم لطف کنید یک آموزش کاملی قرار بدید تا بتونم درستش کنم!!!
       
      ًضروریه !!!
       
      متشکرم....
    • توسط SamanH
      با سلام و عرض ادب و خسته نباشید
      یک  سوال مهم داشتم ، خیلی از سایت ها ، آموزش ها و فیلم ها هم در وب سایت های ایرانی و خارجی تماشا کردم و هرکدوشون درباره اتصال فرگمنت به Bottombar کتابخانه دیزاین (( Support Design Library))) ی چیز گفته بودن ، و من وقتی اونها را انجام می دادم ، همیشه یک جای کار خراب بود و یجورایی باگ به وجود می اومد..
       
      سوال من اینه که چجوری فرگمنت ها رو به BottomBar وصل کنیم و وقتی رو هرکدومشون کلیک می کنیم ، یک فرگمنت اجرا بشه ، مثل برنامه کافه بازار !!!!!!
       
      ممنون میشم لطف کنید یک آموزش کاملی قرار بدید تا بتونم درستش کنم!!!
       
      ًضروریه !!!
    • توسط masoudandroid
      با سلام
       از اکتیویتی ۱ میخوام intent کنم به فرگمنتی در اکتیویتی۲  به نظرتون باید چیکار کنم؟؟؟
      در واقع یه اکتیویتی دارم که میخوام با کلیک بر روی یه تکست ویو بره به یه فرگمنت که جزئی از ساختار bottomnavigation هستش...
      تو فرگمنت که در اکتیویتی 2 قرار داره باید کدی زده بشه تا اکتیویتی 1 رو بخونه؟؟(قابل توجه که من اطلاعات نمیخوام پاس بدم فقط میخوام صفحات جابجا بشن)
      باتشکر از پاسخگویی شما دوستان و همکاران عزیز.
    • توسط soroush80
      سلام دستان من به یه مشکلی خوردم من یه battom barدرست کردم و خب چند تا فرگمنت براش قرار دادم الان میخوام تو یکی از فرگمنت هام  toolbarبزارم نه تو کل برنامه اما چون فایل جاوای اون activity من به صورت extends fragmentهست خیلی از خواصAppCompatActivity رو نداره به همین خاطر نمیتونم toolbarرو بهش اظافه کنم میخواستم اگه میشه یا یه روش بهم بگید که fragment هم خواصAppCompatActivity رو پیدا کنه یا یه راه حل بهم بدید.
      خیلی ممنون.
  • فایل

×
×
  • اضافه کردن...