اذهب إلى المحتوى

Flutter Dev

الأعضاء
  • المساهمات

    787
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    2

أجوبة بواسطة Flutter Dev

  1. بتاريخ الآن قال Mohamd Imran:

    جرب إغلاق التطبيق تماماً ,وقم بتشغيله مرة أخرى في حال لم ينفع ,ما هو إصدار الminSDK لديك في ملف ال mainfest

    بنسبه ل صلاحيات mainfest 

    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
            android:maxSdkVersion="18" />

    اما لجريدل 

        compileSdkVersion 28
            minSdkVersion 16

     

    • أعجبني 1
  2. بتاريخ 5 دقائق مضت قال Mohamd Imran:

    سبب الخطأ هو يخبرك بأنه يحتاج إلى ال permission لتخزين الصورة قم بإعطاءه ذلك أما من خلال الدخول على التطبيق من الجوال من خلال التطبيقات ثم الصلاحيات أو ما شابه ,أو قم بإضافة ال permssion المطلوب في ملف mainfest وهو هذا

     

    
    android.permission.WRITE_EXTERNAL_STORAGE

    ثم قم بالتجربة

    device-2020.thumb.png.c20d8a5175339b790ebe6e2138aabc20.png

     

    اذا قصدك هذا الصلاحيه ف انا مفعلها ولكن يظهر لي نفس لكراش وبنسبه ل ملف المينفاست انا عامل ادراج ل صلاحيه ايضا بيه 

    • أعجبني 1
  3. بتاريخ 6 دقائق مضت قال Mohamd Imran:

    تأكد من تحميل الصورة  في الفيو قبل إستدعاء الفنكشن 

    مثال 

    
      Picasso.get().load(imurl).into(imageviews);

    وأيضا إسم الفيو لديك هو imageviews لذلك عدل ذلك في الفنكشن إلى التالي 

    
    // Share image
        private void shareImage( ) { 
    BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageviews.getDrawable());
          Bitmap myimg = bitmapDrawable .getBitmap();
          String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some 
          title", null);
          Uri bitmapUri = Uri.parse(bitmapPath);
          Intent shareIntent=new Intent(Intent.ACTION_SEND);
          shareIntent.setType("image/*");
          shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri);
          startActivity(Intent.createChooser(shareIntent,"Share Image"));
                                                       
                                                       }

     

    هذا النتيجة اخي الكراش التالي:

    2020-07-01 23:46:58.318 13563-13563/com.example.myapplication E/MediaStore: Failed to insert image
        java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=13563, uid=10315 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
            at android.os.Parcel.readException(Parcel.java:1693)
            at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
            at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
            at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
            at android.content.ContentResolver.insert(ContentResolver.java:1280)
            at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:1025)
            at com.example.myapplication.Fragmantmarket.ViewOrders.shareImage(ViewOrders.java:266)
            at com.example.myapplication.Fragmantmarket.ViewOrders.access$200(ViewOrders.java:65)
            at com.example.myapplication.Fragmantmarket.ViewOrders$5.onClick(ViewOrders.java:253)
            at android.view.View.performClick(View.java:6205)
            at android.widget.TextView.performClick(TextView.java:11103)
            at android.view.View$PerformClick.run(View.java:23653)
            at android.os.Handler.handleCallback(Handler.java:751)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:6682)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
    2020-07-01 23:46:58.319 13563-13563/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.myapplication, PID: 13563
        java.lang.NullPointerException: uriString
            at android.net.Uri$StringUri.<init>(Uri.java:475)
            at android.net.Uri$StringUri.<init>(Uri.java)
            at android.net.Uri.parse(Uri.java:437)
            at com.example.myapplication.Fragmantmarket.ViewOrders.shareImage(ViewOrders.java:267)
            at com.example.myapplication.Fragmantmarket.ViewOrders.access$200(ViewOrders.java:65)
            at com.example.myapplication.Fragmantmarket.ViewOrders$5.onClick(ViewOrders.java:253)
            at android.view.View.performClick(View.java:6205)
            at android.widget.TextView.performClick(TextView.java:11103)
            at android.view.View$PerformClick.run(View.java:23653)
            at android.os.Handler.handleCallback(Handler.java:751)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:6682)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

    بنسبه لمسميات imageviews لا باس بالاختلاف لني اجرب على مشروعين حتى ارء النتيجة مشروع مفصل صغير حتى لا اتوه بالمشروع الكامل

    وبنسبه لتحميل هذا الكراش الان والتحميل مكتمل 

    • أعجبني 1
  4. بتاريخ 5 دقائق مضت قال Mohamd Imran:

    تمام  ,أتوقع إنك تريد مشاركة الصورة من ال imageView إن كان كذلك فقط عدل الفنكشن إلى التالي 

    
    // Share image
        private void shareImage( ) { 
    BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageView.getDrawable());
          Bitmap myimg = bitmapDrawable .getBitmap();
          String bitmapPath = Images.Media.insertImage(getContentResolver(), myimg,"some 
          title", null);
          Uri bitmapUri = Uri.parse(bitmapPath);
          Intent shareIntent=new Intent(Intent.ACTION_SEND);
          shareIntent.setType("image/*");
          shareIntent.putExtra(Intent.EXTRA_STREAM, bitmapUri);
          startActivity(Intent.createChooser(shareIntent,"Share Image"));
                                                       
                                                       }

    هكذا سيتم مشاركة الصورة من ال imageView ,أعلمني بالنتيجة 

    يحدث الاكراش التالي اخي:

        Process: com.example.myapplication, PID: 8410
        java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
            at com.example.myapplication.Fragmantmarket.ViewOrders.shareImage(ViewOrders.java:259)
            at com.example.myapplication.Fragmantmarket.ViewOrders.onCreateView(ViewOrders.java:251)
            at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
            at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
            at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
            at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
            at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
            at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
            at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
            at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169)
            at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992)
            at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
            at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1818)
            at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:303)
            at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:246)
            at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244)
            at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
            at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
            at android.view.View.measure(View.java:21051)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
            at android.view.View.measure(View.java:21051)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
            at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
            at android.view.View.measure(View.java:21051)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
            at android.view.View.measure(View.java:21051)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
            at android.view.View.measure(View.java:21051)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
            at android.view.View.measure(View.java:21051)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
            at com.android.internal.policy.DecorView.onMeasure(DecorView.java:853)
            at android.view.View.measure(View.java:21051)
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2583)
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1642)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1893)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1522)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7098)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
            at android.view.Choreographer.doCallbacks(Choreographer.java:702)
    2020-07-01 23:35:28.035 8410-8410/com.example.myapplication E/AndroidRuntime:     at android.view.Choreographer.doFrame(Choreographer.java:638)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
            at android.os.Handler.handleCallback(Handler.java:751)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:6682)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

     

    • أعجبني 1
  5. بتاريخ 5 دقائق مضت قال Mohamd Imran:

    وعليكم السلام أخي @مروان مروان3

    أتوقع يمكنك عمل التعديل على الفنكشن وتمرير متغير الصورة imurl إلى ال intent أي هكذا

     

    
     // Share image
        private void shareImage( ) {
            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
            sharingIntent.setType("image/*");
            sharingIntent.putExtra(Intent.EXTRA_STREAM, imurl);
            startActivity(Intent.createChooser(sharingIntent, "Share Image Using"));
        }

    هذه الجزء تحديداً 

    
    sharingIntent.putExtra(Intent.EXTRA_STREAM, imurl);

    لاحظ imurl 

    لم ينفع ذلك عزيزي جربت ذلك سابقا

    والخطا كان كالتالي:

    String failed,please try agein

     

  6. السلام عليكم ورحمة الله وبركاته

    تحيه طيبه للجميع

    لدي استفسار لو تكرمتو .. لدي الكود التالي لمشاركة الصور من تطبيقي الى تطبيق الواتساب على سبيل المثال :

        // Share image
        private void shareImage( ) {
            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
            sharingIntent.setType("image/*");
            sharingIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
            startActivity(Intent.createChooser(sharingIntent, "Share Image Using"));
        }

    ولكن لدي مشكلة كالتالي:

    انا استخدم هذا الكود في activity تم جلب الصور فيه من خلال Intent الكود التالي :

      final String imurl = i.getStringExtra("Image");

    واقوم بعرضها من خلال مكتبة البيكاسو :

      Picasso.get().load(imurl).into(imageviews);

    سوالي الان لو ارغب بمشاركة هذا الصورة المعروضه الى الان تطبيق الواتساب مثلا كيف ممكن اعدل على كود مشاركة الصور الذي سبق وقمت بادراجه في اول السوال ؟

    • أعجبني 1
  7. قمت بانشاء قاعدة بيانات وحساب مجاني تجريبي ثم توجهت الى قائمة Database Manager ثم قمت باختيار انشاء قاعدة بيانات جديدة

    ولكن لما احاول الدخول الى صفحة phpmyadmin حتى استطيع تحرير قواعد البيانات وتعديل والاضافة يطلب مني كلمة المرور واسم المستخدم 

    ف اقوم بادخال كلمة المرور التي عملتها عند انشاء قاعدة البيانات في الموقع ثم اسم المستخدم ولكن قد اكون مخطى ب اسم المستخدم 

    اي خانة او ماذا يجب ان اكتب ف خانة اسم المستخدم ؟قمت بتجربة DB User وDB Name ولكن بدون فائده 

    رسالة الخطاء كالتالي

    mysqli_real_connect(): (HY000/1045): ProxySQL Error: Access denied for user 'localhost'@'2a02:4780:bad:c0de::19' (using password: YES)

     

  8. بتاريخ 3 دقائق مضت قال Mohamd Imran:

    تمام الأن بعد إدراج السعر في قاعدة البيانات أتوقع أنه تقوم بإرجاعه لعرض السلعة والسعر الخاص بها ؟صحيح ,فلنفترض كذلك ,ما سنقوم به قبل عرض  سعر السلعة بجانبها هو تحويل السعر وهي عملية بسيطة فلنعتبر السعر الخاص بالسلعة المعروضة ٥$ والمستخدم المسجل الدخول من السعودية ,نقوم بتحويل السعر مباشرة بضرب السعر بسعر صرف الريال السعودي وهو تقريباً ٣ برمجياً يمكن ذلك هكذا 

    
    float finalPrice = baseCur * userCur;
    EditText.setText(String.valueof(finalPrice));

    حيث baseCur هل العملة الرئيسية وهي الدولار ,و userCur هي عملة المستخدم وفي مثالنا هي الريال السعودي 

    كل شكر لك ي غالي على التوضيح ساقوم بتجربه وساطلعك على النتيجة باذن الله 

    • أعجبني 1
  9. بتاريخ 5 دقائق مضت قال Mohamd Imran:

    من أي تقوم بوضع السعر للسلعة ؟هل من api أم من مصدر محلي داخل التطبيق ؟

    بامانه لم افهم سوال جيدا

    ولكن نفترض انني مستخدم لتطبيق ووضعت بيانات كتاب للبيع انا عامل حقل edittext لدراج السعر من ضمن بيانات المنتج

    بحيث يدخل السعر على شكل رقم

    ثم اقوم بارسال هذا الرقم عن طريق مكتبة volley الى db طبعا بين volley and db في ملف php ملف الاتصال وعمل ادراج البيانات الى قاعدة البيانات

     

     

    • أعجبني 1
  10. بتاريخ 2 دقائق مضت قال Mohamd Imran:

    للأسف لم أعثر على شرح خاص بذلك ,لكن سهل يمكنك عمل api في السيرفر (مثلما قمت سابقاً)  خاص بإرجاع العملة بناء على الطلب مثال 

    
    <?php 
            //getting the database connection
    	require_once 'DbConnect.php';
    	
    	//an array to display response
    	$response = array();
    	
    	
    	if(isset($_GET['id'])){
          $id = intval($_GET['id']);
          $result = mysqli_query("SELECT id, currency FROM table WHERE id=$id");
          $row = mysqli_fetch_assoc($result);
    	$response = $row['id']." ".$row['currency'];
    		
        }
    	
    	//displaying the response in json structure 
    	echo json_encode($response);

    فليكن إسم الملف cur.php نقوم بإرسال المتغير id وال api سيرجع لنا العملة الخاص بذلك ال id 

    
    http://example.com/cur.php?id=1

    وإستخدم تلك العملة في السلعة 

    هلا بيك عزيزي

    @Mohamd Imran

    هذا الامر مقدور عليه ماشي باس 

    المشكله ب موضوع التحويل في وقت الادراج وموقع التحويل في وقت العرض تحويل العملات 

    • أعجبني 1
  11. بتاريخ 8 دقائق مضت قال محمد ربيع زليول:

    لا أعلم إن كنت تحتفظ بالدول في جدول مستقل، والمستخدمين بجدول آخر، وتقوم بربط المستخدم مع الدولة عن طريق مفتاح جانبي.

    أم أنك تقوم بكتابة اسم الدولة في جدول المستخدم مباشرة.

    المهم إن كنت تستخدم الطريقة الأولى، قم بإضافة إسم العملة لجدول الدولة، وقم بتسجيل عملة المستخدم ف SharedPreferences أيضًا بنفس الطريقة التي قمت بها بتسجيل دولة المستخدم.

    وإن كنت تستخدم الطريقة الثانية، قم عندها بإضافة اسم العملة لجدول المستخدم، وتسجيلها أيضًا في SharedPreferences.

    عندما يدخل المستخدم إلى منتج ما، قم بقراءة العملة من SharedPreferences واستصل بدالة التحويل وعرض السعر.

    هلا بيك عزيزي

    بنسبه للحل الثاني مناسب لي للني امتلك المستخدم ودوله في نفس الجدول او في جدول واحد وبستطاعتي حفظعم في ملف شير 

    هل يوجد شرح في اليوتيوب عزيزي لهذا الخطوه ... قم بقراءة العملة من SharedPreferences واستصل بدالة التحويل وعرض السعر ؟

  12. بتاريخ 8 دقائق مضت قال محمد ربيع زليول:

    هناك دائمًا طرق كثيرة لعمل أي شيء برمجيًا.

    سأشارك معك طريقة من الطرق، أو هي فكرة فقط.

    أولًا في قاعدة البيانات وعلى نظامك قم بتسجيل أسعار المنتجات دائمًا بنفس العملة، مثلًا ليكن الدولار أو اليورو هو العملة الرئيسية للتطبيق.

    بعد ذلك يجب أن تنشئ دالة للتحويل، الدالة ستشبه هذه الدالة، وستختلف حسب اللغة البرمجية التي تستعملها.

    
    float price(float price, string currency) {
       
       switch(currency){
           case 'USD':
            return price;
           case 'SAR':
            return 3.75 * price;
           case 'EUR':
            return 0.89 * price;
           case 'JPY':
           return 107.18 * price;
       }
    
    }

    ستقوم الدالة بتحويل قيمة ما إلى عملة أخرى، ندخل القيمة في المدخل الاول ثم العملة التي نريدها في المدخل الثاني.

    بعد ذلك تقوم بعملية حسابية عن طريق ضرب القيمة الدولار بقيمة التحويل لتلك العملة لتحصل على النتيجة.

    يمكنك الحصول على هاته القيم من قاعدة البيانات لكن يجب تجديدها بشكل مستمر.

    أو يمكنك إستخدام بعض Api التي تقوم بإعطائك هاته القيم مثال: exchangeratesapi.

    الآن في تطبيقك يجب أن يكون لكل مستخدم عملته الإفتراضية، يمكنك جعل الدولار هو العملة الإفتراضية مثلًا لكل المستخدمين، ويمكن لكل مستخدم تغير  العملة الإفتراضية فيما بعد أو يمكنك عند التسجيل وبعد إختيار المستخدم لدولته، أن تقوم بجعل لكل دولة عملة افتراضية في قاعدة البيانات وبهذا بما أن المستخدم ينتمي لدولة ما، سيكون يمتلك عملة افتراضية.

    هذه العمل الإفتراضية، سنقوم بإستخدمها فيما بعد لعرض سعر المنتج، فبدل إستدعاء سعر المنتج مباشرة، سنقوم بإستدعاء هاته الدالة، بمدخليها، المدخل الأول قيمة المنتج بالدولار والمدخل الثاني عملة المستخدم.

    هناك بعض المكتبات التي تقوم بالتحويل المباشر، فمثلًا في جافاسكربت نجد مكتبة money.js التي تقوم بعملية التحويل عن طريق إحدى دوالها.

    ويمكن أن تجد مكتبات حسب اللغة البرمجية التي تستخدمها لعمل هذا التحويل.

    هناك بعض المكتبات تعتمد على مواقع للحصول على قيمة التحويل.

    هلا بيك اخوي

    شكرا على شرحك حقيقي ما قصرت انا فاهم تقريبا الي شرحته انت بس ما كل شي اعرف اطبقه 100%100 لني جديد شويه 

    ولكن انا ابرمج بلغة الجافا تطبيق اندرويد

    ومثل ما ذكرت انت انا اخذ الدوله حسب اختيار العضو في بداية تسجيله واحتفظ فيها بقاعدة البيانات + SharedPreferences 

    وبما اني الان لدي دولة المستخدم في بداية تسجيله 

    ماهيا اسهل طريقة ممكن عملها الان ؟ بحكم اني املك الدولة الان

    بتاريخ 3 دقائق مضت قال Mohamd Imran:

    مرحباً @مروان مروان3

     

    يمكنك عمل ذلك من جهة السيرفر أو من جهة التطبيق ,من جهة التطبيق لعرض العملة المناسبة لدولة المستخدم يمكنك عمل مصفوفة تحوي رمز الدولة التي تريد ومقابل كل دولة تضع العملة ,وعند إدراج سلعة من قبل المستخدم قبل إدراج السلعة نقوم بالتحقق من دولة المستخدم مثلاً إن كانت السعودية نعرض sar ,وبالنسبة لتحويل العملة نفس الطريقة لكن نقوم بعملية حسابية العملة الرئيسية ستكون الدولار ,وعند عرض مستخدم من السعودية لتلك السلعة يتم ضرب سعر السلعة(دولار) بسعر صرف الريال السعودي رح يطلع إلنا السعر بالريال السعودي ونضع ذلك السعر للسلعة ,يمكنك عمل ذلك من جهة السيرفر أو التطبيق ,يمكنك عمل api وعمل جدول في قاعدة البيانات يحوي الدول الخاصة بكل مستخدم وال api يأخذ مثلا id المستخدم ودولته من التطبيق  ويقوم بإرجاع العملة بناء على ذلك من  هذه سيسهل عليك في حالة تطور التطبيق ويمكنك إستخدام العملة المرجعة لذلك المستخدم 

    هلا بيك عزيزي

    @Mohamd Imran

    شكرا على شرحك كثير ي غالي

    الا يوجد شرح في اليوتيوب لهذا العمل؟ عربي او انجليزي لا توجد مشكلة للني حاولت ابحث ولم اجد 

    • أعجبني 1
  13. السلام عليكم ورحمة الله وبركاته

    لدي استفسار لو سمحتو

    كيف ممكن اعرض عملة الدولة امام السعر او بجانبه لا يهم المهم كيف اعرض او كيف يكون النظام 

    بحيث اني برمجة تطبيق ممكن ان يتم ادراج في اسعار من دول مختلفة $ مثلا واليوروا والريال والدرهم 

    كيف ممكن نعرف مثلا

    المستخدم احمد عملته نوعها $

    المستخدم يحيى عملته الريال 

    المستخدم يونس عملته الدرهم 

    بحيث ان لما يدرج سلعه يجب ان يتم اضافة بجانب السعر نوع عملته كيف ممكن التطبيق يكتشف ذلك بشكل تلقائي للمستخدمون وايضا كيف ممكن نعرضها للمستخدمين الاخرين او نقوم بتحويلها بحيث تساوي بسعر عملة الدولة الاخرى ؟

     

     

    • أعجبني 1
  14. @عبود سمير

    قمت بعمل قتل للاكتفتي السابق في وقت خروج المستخدم وقد نجح الامر شكر لك عزيزي

     

    للفائدة فقط في وقت اغلاق الاكتفتي لعمل التحديث نعمل 

    Intent intent = new Intent(Activity1.this, Activity2.class);
            startActivity(intent);
            finish();

     

    • أعجبني 1
  15. بتاريخ 22 ساعات قال عبود سمير:

    مرحباً مروان ..
    لم أفهم بشكل جيد لكن بطبيعة الحال سيظهر لك هذا الخطأ لأن الدالة أو الإقتران createSession ينتظر منك تمرير 3 parameters و أنت قمت بتمرير parameter واحد فقط و الحل إما تمرير كافة القيم بجلبها من sharedPreferences و تمريرها إلى الدالة و تغيير فقط قيمة الإسم أو إنشاء دالة جديدة ب parameter واحد بهذا الشكل :

    
    public void createSession(String name){
      editor.putString(NAME, name);
      editor.apply();
    }

    و قُم بإستعمالها.

    بالتوفيق

    هلا بيك اخي

    بنسبه الى الحل الاول بمعنى اجيبهم مثل ما كانو سابقا وارجعهم مثل ما هم من جديد؟

    اما الثاني لو استخدمته بيكون لدى اكثر من داله واثنى دخول المستخدم بحتاج اني احفظ القيم باكثر من داله بمعنى سيصبح الكود اطول كثير ومتشعبنا

    ساجرب الاول وساخبرك بنتيجة باذن الله

    شكرا لك عزيزي

    • أعجبني 1
  16. السلام عليكم ورحمة الله وبركاته 

    استخدم ملف او نموذج sharedPreferences لحفظ بيانات المستخدم من صفحة login بمعنى اول من يدخل التطبيق المستخدم اخذ البيانات التي احتاجها واحفظها من اجل استخدامها في التطبيق مثل بيانات العضو والحظر وباقي الاجراءات والامور ناجح تمام ولكن لدي مشكلة بسيطه 

    انا اقوم بستدعاء sharedPreferences الذي هي بداخل كلاس منفصل  الى الصفحة التي احتاجه عن طريق الكود التالي :

    
    
        SessionManager sessionManager;
    
    
    sessionManager = new SessionManager(this);

    واقوم بحفظ البيانات اليها من خلال volley على سبيل المثال اذا كانت في صفحة تسجيل الدخول حتى تاخذ البيانات بشكل التالي :

       sessionManager.createSession(name,password,cuntry,photo);

    الان قمت باخذ 4 حقول الى ملف sharedPreferences 

     

    الى كذا الامر 100%100 الان الى المشكلة 

    لو قمت بستدعاء ملف sharedPreferences في صحفة مختلفة ونقول صفحة الملف الشخصي ورغبت بتعديل بيانات العضو ولكن ليس كلها مثلا فقط الاسم طبعا الان ممكن التعديل ولكن لن يتغير الاسم الا اذا قام المستخدم بتسجيل الخروج وانتهت جلست sharedPreferences ورجع يدخل بيكون قد تحدث اسمه في التطبيق ولو حاولت اني اضيف السطر التالي الى volley الخاصة بتحديث الملف :

       sessionManager.createSession(name);

    سيظهر لدي الخطاء التالي:

    'createSession(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)' in 'com.example.myapplication.SessionManager' cannot be applied to '(java.lang.String)'

    وهو يطالبني بحفظ جميع الحقول مثل ما حدث في صحفة تسجيل الدخول ولكن انا احتياجي لتحديث الاسم فقط الان

    فكيف استطيع فعل ذلك ؟وتحديث الحقل المطلوب فقط بدون ان تتاثر باقي الحقول المحفوظة في sharedPreferences

    مرفق لكم نموذج من ملف كلاس sharedPreferences كالتالي :

    public class SessionManager {
    
        SharedPreferences Preferences;
        public SharedPreferences.Editor editor;
        public Context context;
        int PRIVATE_MODE = 0;
    
        private static final String PREF_NAME = "LOGIN";
        private static final String LOGIN = "IS_LOGIN";
        public static final String NAME = "NAME";
      
    
      
    
        public SessionManager(Context context) {
            this.context = context;
            sharedPreferences = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
            editor = sharedPreferences.edit();
        }
        public void createSession(String name, String phone,String UsersdId){
    
            editor.putBoolean(LOGIN, true);
            editor.putString(NAME, name);
            
           editor.putString(ID, UsersdId);
            editor.apply();
        }
    
       
        
    
    
        public HashMap<String, String> getUserDetail(){
            HashMap<String, String> user = new HashMap<>();
            user.put(NAME, sharedPreferences.getString(NAME, null));
            user.put(ID, sharedPreferences.getString(ID, null));
    
     
            return user;
        }
    
    
    
        
    
    
    }

     

    كيف سيتم كتابة هذا السطر :

       sessionManager.createSession(name);

    ام انا في حاجه الى استبداله بسطر مختلف ؟

  17. بتاريخ منذ ساعة مضت قال ماجد قطوسة:

    لجعل التطبيق الخاص بك يدعم لغات مختلفة عليك وضع جميع النصوص التي تظهر في التطبيق داخل ملف strings.xml 

    و أرفق لك هذا الرابط تجد  فيه شرح باللغة العربية بسيط و شافي و كامل للطريقة بالتفصيل 

    @ماجد قطوسةالشرح قمت في الروعه 

    ولكن خاب الضن بسبب الكود المصدري غير متوفر لما حاولت انزله مع الاسف 

    شكرا لك ي غالي استفدت كثير من الشرح

    بتاريخ 3 ساعات قال عبود سمير:

    مرحباً مروان 

    أظن أنك تريد جعل تطبيقك متعدد اللغات و في هذه الحالة أنصحك بمتابعة هذا الفيديو فقد تم شرح الطريقة فيه 

    بالتوفيق

    شكرا لك عزيزي 

    تم الاستفاده ولله الحمد الشرح واضح 

    بتاريخ 4 ساعات قال Mohamd Imran:

    وعليكم السلام أخي @مروان مروان3

    إن كنت تريد تعريب التطبيق أي تحويل اللغة إلى الإنجليزية وبناء التطبيق ,يمكنك ذلك من خلال وضع جميع النصوص التي تستخدمها في تطبيقك إلى ملف strings.xml ومن ثم إستدعاءها في تطبيقك , وأي ترجمة تريدها فقط قم بتعريب النصوص في الملف للغة التي تريد 

    شكرا لك ي غالي لقد فهمت الامر

  18. السلام عليكم ورحمة الله وبركاته

    مثال قمت بتطوير تطبيق اندرويد كامل بلغة لجافا 

    كيف ممكن احميه من القرصنه وسرقته ؟او من الهندسة العسكية ؟

    ما هيا الطرق التي يمكن اتباعها ؟

     

    ايضا بنسبة لملفات الاتصال php كيف يمكن حمايتها ؟

    • أعجبني 1
  19. السلام عليكم ورحمة الله وبركاته 

    اخواني انا استخدم materialBetterSpinner لعرض اختيارات للمستخدم ولكن ما اعرضه هو نصوص للمستخدم مثل الاطفال \ الكبار \ المتوسطين وما شابه اسماء الاقسام في التطبيق 

    وبعدها اقوم بتحويل النصوص الى ارقام وكل قسم له رقم محدد يساويه مثلا

    الاطفال=1 

    الكبار =2

    ولكن التحويل برمجي يعني المستخدم لا يستطيع مشاهدة ما يحدث داخل الكود

    ثم اخذ هذا الرقم واقوم بادرجه الى قاعدة البيانات من خلال مكتبة volley 

     

    لتوضيح العمليه اعلاه هذا الشكل الكود معي 

     

      String[] SPINNER_DATA = {"Baby","woman " };
        String[] SECOND_ARRAY = {"1","2"};
        MaterialBetterSpinner materialBetterSpinner;
         materialBetterSpinner = (MaterialBetterSpinner) findViewById(R.id.material_spinner1);
            ArrayAdapter<String> adaptermatr = new ArrayAdapter<String>(MAddNewItem.this,android.R.layout.simple_dropdown_item_1line, SPINNER_DATA);
            materialBetterSpinner.setAdapter(adaptermatr);
            materialBetterSpinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                    value = SECOND_ARRAY[position];
    
                }
            });

    واقوم بادرجه الى قاعدة البيانات بشكل التالي :

       private void upload() {
    
            StringRequest stringRequest = new StringRequest(Request.Method.POST, image_upload_url,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            try {
                                JSONObject jsonObject = new JSONObject(response);
                                String Response = jsonObject.getString("response");
                            
    
                               
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                          
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
    
                }
            }) {
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> params = new HashMap<String, String>();
       
                  params.put("Section", value.toString().trim());
                
    
                    return params;
                }
            };
            RequestQueue requestQueue = (RequestQueue) Volley.newRequestQueue(MAddNewItem.this);
            requestQueue.add(stringRequest);
    
    
        }

    طيب الان لدي مشكلة انا اقوم بحفظ بيانات المدخله من المستخدم في حقول edittext في sharedPreferences عشان لو خرج المستخدم فجاه وفتح التطبيق تكون البيانات موجوده ولمشاكل مختلفة متعدده ايضا 

     

    من خلال الكود التالي :

       SharedPreferences share = getSharedPreferences("Data", Context.MODE_PRIVATE);
            SharedPreferences.Editor edit = share.edit();
            edit.putString("token",materialBetterSpinner.getText().toString());
          
            edit.commit();

    واستددعي هذا البيانات من جديد من خلال الكود التالي :

          SharedPreferences share = getSharedPreferences("Data", Context.MODE_PRIVATE);
    
            materialBetterSpinner.setText(share.getString("token",""));

     

     

    المشكلة التي اوجهها الان لما اقوم باختيار القسم واعمل خروج واعود رح يسحب التطبيق البيانات من sharedPreferences بطبيعة الحال لني قمت بحفظها 

    ولكن ما سيجلبه هو اسم القسم بمعنى سياتي لي ب النص ويعرضه مثل Baby","woman

    ولكن لو حاولت اقوم بادرج البيانات الان من خلال الفولي وعمل حفظ لهم بيكون فيه خطاء لدي المفترض ان نقوم بحفظ الرقم الذي يساوي لنا القسم المذكور او المعروض وليس النص او اسم القسم

     

    المطلوب الان ان يقوم ملف sharedPreferences بعرض النص للمستخدم وهذا الامر يحدث ولكن ان نحفظ الرقم الذي يساويه //الان هو يعرض النص ولكن لو جيت اعمل حفظ لقاعدة البيانات رح يقولي انه الحقل فارغ لنه هو حفظ النص الي موجود داخل sprin فقط وليس النص وقيمة value بحيث انه لم يرجع يستدعي البيانات تكون value تحمل قيمة

     

     

    اتمنى  تكون المشكلة واضحه

    كيف يمكن حل هذا المشكلة ياليت اذا احد لديه فكره يساعدنا فيها 

    • أعجبني 1
  20. هلا بيك عزيزي @عبود سمير

    ( يجب إضافة أكثر من listener ) هذا المشكلة لو عملت كذا بيكون الكود طويل جدا في حالة لدي كمية كبيره من حقول الادخال 

    ولكني ساجرب طريقة الفيديو اعتقد اني فهمت طريقة ويمكن الاستعانه بها 

    @عبدالرشيد احمد

    هلا بيك اخوي 

    لا اخي لا احتاج الى نقل البيانات الى اكتفتي مختلف انا فقط احاول حفظ حالة الاكتفتي لو فتحت اكتفتي ثاني 

  21. بتاريخ 3 ساعات قال عبدالرشيد احمد:

    هل الكراش بعد شاشة ادخال الرقم؟ هل يصل الى شاشة التحقيق او البروفايل؟

    بعد الانتقال الى شاشة تاكيد الرقم يحدث لكراش بمعنى في شاشة ادخال الرقم

×
×
  • أضف...