رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل

شاهرخ جهان زاده

مدیر انجمن
  • تعداد ارسال ها

    183
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    69

پست ها ارسال شده توسط شاهرخ جهان زاده

  1. public class MyActivity extends Activity {
     
      public static final String PREFS_NAME = "MyApp_Preferences";
     
      @Override
      public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
     
         SharedPreferences preferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
     
         // نوشتن و ذخیره استرینگ در آن
         Editor editor = preferences.edit();
         editor.putString("SAVED_TEXT", "my text");
         editor.commit();
     
         // خواندن اطلاعات از آن
         String value = preferences.getString("SAVED_TEXT", "");
         Log.d(TAG, value);
      }
    }

    امیدوارم این کدها کمک کنه...

    • Like 1
  2. در در 1398/04/17, 13:11:36، Vahid761 گفته است :

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

    سلام...

    باید از SharedPreferences استفاده کنید تا متن به صورت String در اون ذخیره بشه...

    • Like 1
  3. در در 1398/03/26, 18:50:58، sara7798 گفته است :

    سلام من به پروژم bottombar اضافه کردم اما زمان اجرا روی youwave این خطا رو داره:

    06-16 13:10:00.948 2441-2441/com.example.booktest E/dalvikvm: Could not find class 'android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper', referenced from method android.support.v4.view.ViewCompat.addOnUnhandledKeyEventListener
    06-16 13:10:00.948 2441-2441/com.example.booktest E/dalvikvm: Could not find class 'android.view.WindowInsets', referenced from method android.support.v4.view.ViewCompat.dispatchApplyWindowInsets
    06-16 13:10:01.028 2441-2441/com.example.booktest E/dalvikvm: Could not find class 'android.view.WindowInsets', referenced from method android.support.v4.view.ViewCompat.onApplyWindowInsets
    06-16 13:10:01.028 2441-2441/com.example.booktest E/dalvikvm: Could not find class 'android.view.View$OnUnhandledKeyEventListener', referenced from method android.support.v4.view.ViewCompat.removeOnUnhandledKeyEventListener
    06-16 13:10:01.028 2441-2441/com.example.booktest E/dalvikvm: Could not find class 'android.support.v4.view.ViewCompat$1', referenced from method android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener
    06-16 13:10:01.218 2441-2441/com.example.booktest E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
    06-16 13:10:03.588 2441-2441/com.example.booktest E/AndroidRuntime: FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.booktest/com.example.booktest.Main2Activity}: android.view.InflateException: Binary XML file line #16: Error inflating class com.roughike.bottombar.BottomBar
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
         Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class com.roughike.bottombar.BottomBar
            at android.view.LayoutInflater.createView(LayoutInflater.java:606)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
            at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
            at com.example.booktest.Main2Activity.onCreate(Main2Activity.java:19)
            at android.app.Activity.performCreate(Activity.java:4465)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
            at android.view.LayoutInflater.createView(LayoutInflater.java:586)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
            at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
            at com.example.booktest.Main2Activity.onCreate(Main2Activity.java:19)
            at android.app.Activity.performCreate(Activity.java:4465)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.ArithmeticException: divide by zero
            at com.roughike.bottombar.BottomBar.resizeTabsToCorrectSizes(BottomBar.java:391)
            at com.roughike.bottombar.BottomBar.updateItems(BottomBar.java:379)
            at com.roughike.bottombar.BottomBar.setItems(BottomBar.java:310)
            at com.roughike.bottombar.BottomBar.setItems(BottomBar.java:293)
            at com.roughike.bottombar.BottomBar.init(BottomBar.java:148)
            at com.roughike.bottombar.BottomBar.<init>(BottomBar.java:127)
            at com.roughike.bottombar.BottomBar.<init>(BottomBar.java:122)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
            at android.view.LayoutInflater.createView(LayoutInflater.java:586)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
            at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
            at com.example.booktest.Main2Activity.onCreate(Main2Activity.java:19)
            at android.app.Activity.performCreate(Activity.java:4465)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
            at android.app.ActivityThread.access$600(ActivityThread.java:123)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4424)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            at dalvik.system.NativeStart.main(Native Method)

     

    سلام...

    لطفا کدهای فایل xml و gradle رو بذارید...

  4. در در 1398/01/21, 15:08:50، moosi گفته است :

    سلام . میخوام از یه فرگمنت در اکتیویتی اول به اکتیویتی دوم اطلاعات ارسال کنم ؟ بهترین راه برای این کار چیه ؟ چطور میتونم این کار رو ربه کمک اینترفیس انجام بدم ؟ 

    سلام...

    باید از Bundle و بعد putExtra استفاده کنی:

    Intent intent = new Intent(getActivity(), SecondActivity.class);
    intent.putExtra("MY_TEXT", "your text");
    startActivity(intent);

    برای دریافت اطلاعات در اکتیویتی که هدایت شدیم، به این صورت اطلاعات رو دریافت میکنیم:

    String value = getIntent().getExtra("MY_TEXT");

     

  5. در 37 دقیقه قبل، broken.heart گفته است :

    Caused by: android.content.res.Resources$NotFoundException: Resource "com.example.myapplication:drawable/logo"

    سلام...

    توی این خط داره میگه که SOURCE رو پیدا نمیکنه...

    چک کن ببین اسمش درسته!!!

    معمولا باید نوع فایل رو هم مشخص کنی. مثلا: logo.png

    • Like 1
  6. در 45 دقیقه قبل، mostafa2020 گفته است :

    سلام

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

    
     {images={orginal=/upload/images/2019/1/logo-app2.png, 200=/upload/images/2019/1/200_logo-app2.png,
     400=/upload/images/2019/1/400_logo-app2.png, 600=/upload/images/2019/1/600_logo-app2.png}, 
    thumb=/upload/images/2019/1/200_logo-app2.png}

     

    Capture.png

    سلام...

    کاری که شما در طراحی فایل JSON کردید از نظر ساختاری دارای ایراد هست...

    شما باید image  رو به صورت JsonArray طراحی کنید، ولی اینجا دو آبجکت رو در دل هم قرار دادید به همین علت یه رشته رو برمیگردونه که کار شما رو بسیار دشوار میکنه...

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

    {"image":[
      {
        "200":"link-01",
        "400":"link-02",
        "600":"link-03",
        "original":"link-04",
        "thumb":"link-05"
      }]
    }

    جهت تست از سایت زیر استفاده کنید:

    jsoneditoronline.org

  7. در 7 ساعت قبل، amirhossein.tofighy گفته است :

    سلام

    من یه سورس برای اندروید استودیو گرفتم

    ولی متاسفانه ارور های زیادی میده و نمیتونم اونو اجرا کنم

    اگه کسی میتونه ارور های این سورس رو برطرف کنه لطفا کمکم کنه

    من میتونم تا سقف 20000 تومان بابت رفع ارور های این سورس بهش پول بدم

    سلام...

    لطفا لیست خطاها یا تصویر اون رو بذارید...

    ****** ما برای کمک کردن هزینه ای نمیگیریم دوست عزیز، تا اونجایی که از دستمون بر بیاد و اطلاعات داشته باشیم کمک میکنیم...

    • Like 1
  8. در در 1397/10/27, 18:11:10، cloner92 گفته است :

    سلام دوستان

    من تو پروژم به یه ارور برخوردم. اما نمی توانم برطرفش کنم. لطفا راهنماییم کنید.

    متن ارور:

    Compilation failed; see the compiler error output for details.
     

    با تشکر.

    سلام...

    لطفا از کل Logcat عکس بگیرید بذارید تا بهتر بشه راهنمایی کرد...

  9. در 23 ساعت قبل، irmacfa گفته است :

    سلام وقت بخیر ببخشید من یه اپلیکیشن میخواستم درست کنم که کاربر واردش میشه یه ثبت نام بکنه و یک پنل بهش اختصاص داده بشه ! در اونجا سفارش عکس بده و عکس هایی که ازش گرفته شد رو من داخل سایت آپلود کنم و داخل پنل وی نمایش داده بشه سپس بعد از پرداخت اون لینک باز بشه و دانلود کنه عکس ها رو.

     

     

    من سایتشو رو دارم ولی چطوری در قالب اپلیکیشن بیارمش

     

     

    سلام...

    قالب سایتتون طراحی شده یا از وردپرس یا جوملا استفاده کردید؟

  10. در 20 ساعت قبل، m_alikhani گفته است :

    با این دستور:

     

    
    getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

     

    این روش توی بعضی از آیتمها درست جواب نمیده...

    شما باید تمام برنامه رو با استفاده از تغییر locale به زبان فارسی RTL کنید...

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

    https://stackoverflow.com/questions/4985805/set-locale-programmatically

  11. در 2 ساعت قبل، m_alikhani گفته است :

    سلام دوستان عزیزم، 

    متاسفانه برنامه من در نمایش صحیح آیکون ها در آپشن منو مشکل داره. وقتی لایوت برنامه راست به چپ میشه، آیکون ها نصفه نمایش داده می شن.

    اینم لایوت منو هستش:

     

    
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:gravity="start"
        android:layoutDirection="rtl"
        android:layout_gravity="start">
        <item
            android:id="@+id/action_more"
            android:icon="@drawable/ic_add_white_24dp"
            android:title=""
            app:showAsAction="always">
            <menu>
                <item
                    android:id="@+id/action_settings"
                    android:icon="@drawable/ic_wb_sunny_black_24dp"
                    android:title="آیتم شماره 1"/>
    
                <item
                    android:id="@+id/action_settings2"
                    android:icon="@drawable/ic_star_black_24dp"
                    android:title="آیتم شماره 2"/>
    
                <item
                    android:id="@+id/action_settings3"
                    android:icon="@drawable/ic_wb_sunny_black_24dp"
                    android:title="آیتم شماره 3"/>
            </menu>
        </item>
    </menu>

    ممنون میشم راهنمایی کنید.

    Screenshot_1547461705.jpg

    سلام...

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

     

  12. در در 1397/10/21, 10:08:27، omidgs گفته است :

    سلام من از کد زیر برای چک کردن نصب بودن کافه بازار روی گوشی استفاده میکنم وقتی بازار نصبه هیچ مشکلی نیست اما وقتی کافه بازار نصب نیست برنامه کرش میکنه
    استاید بزرگوار لطفا راهنمایی بفرمایید
    تشکر

    کدها :

     

    
    
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
    
    
                if (isPackageInstalled("com.farsitel.bazaar")) {
                    // Bazar is installed
                    try {
                        mHelper.launchPurchaseFlow(MainActivity.this, SKU_PREMIUM1, RC_REQUEST, mPurchaseFinishedListener, "payload-string");
                    }
                    catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(MainActivity.this,
                                "پرداخت موفق نبود لطفا دوباره سعی کنید", Toast.LENGTH_SHORT).show();
                    }
                }
                else {
                    Toast.makeText(MainActivity.this,
                            "لطفا برنامه کافه بازار را نصب کنید", Toast.LENGTH_SHORT).show();
                    // not installed
                }
    
            }
        }, 2000);
    
    
    
    
    
        public boolean isPackageInstalled(String PackageName) {
            PackageManager manager = getPackageManager();
            boolean isAppInstalled = false;
            try {
                manager.getPackageInfo(PackageName, PackageManager.GET_ACTIVITIES);
                isAppInstalled = true;
            }
            catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
            return isAppInstalled;
        }
    

     

    ارور لاگ

     

    
     Exception caught 
                                                            java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory
                                                                at ir.omino.sorkho.Utils.IabHelper.checkSetupDone(IabHelper.java:782)
                                                                at ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync(IabHelper.java:610)
                                                                at ir.omino.sorkho.Utils.IabHelper.queryInventoryAsync(IabHelper.java:639)
                                                                at ir.omino.sorkho.MainActivity$50.onIabSetupFinished(MainActivity.java:2696)
                                                                at ir.omino.sorkho.Utils.IabHelper.startSetup(IabHelper.java:274)
                                                                at ir.omino.sorkho.MainActivity.buy4(MainActivity.java:2687)
                                                                at ir.omino.sorkho.MainActivity$9.onClick(MainActivity.java:667)
                                                                at android.view.View.performClick(View.java:6274)
                                                                at android.view.View$PerformClick.run(View.java:24859)
                                                                at android.os.Handler.handleCallback(Handler.java:789)
                                                                at android.os.Handler.dispatchMessage(Handler.java:98)
                                                                at android.os.Looper.loop(Looper.java:164)
                                                                at android.app.ActivityThread.main(ActivityThread.java:6710)
                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

     

    سلام...

    این آموزش رو مطالعه کنید...

    https://virgool.io/Software/bazaar-xrh0ppzzvuxh

  13. در 11 دقیقه قبل، Alibakhshi025 گفته است :

    لام
    دوستان چرا پارامتری POST با JsonObjectRequest ارسال نمیشه کد زیر
     

    
    Map<String, String> params = new HashMap<String, String>();
                params.put("name", "test");
    
                JSONObject jsonObj = new JSONObject(params);
                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
                        (Request.Method.GET, URL, jsonObj, new Response.Listener<JSONObject>() {
    
                            @Override
                            public void onResponse(JSONObject response) {
    
                                    Toast.makeText(MainActivity.this,response.toString(),Toast.LENGTH_LONG).show();
    
    
                            }
                        }, new Response.ErrorListener() {
    
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
                            }
                        });
                requestQueue.add(jsonObjectRequest);

     

    کد سمت سرور هم اینه 

    
    header('Content-Type: application/json');
     
     
    $_POST = json_decode(file_get_contents('php://input'), true);
     
     
    $response = array();
    $response['name'] = $_POST['ali'];
    echo json_encode($response);

     

    سلام...

    متدی که برای volley نوشتید GET هست نه POST...

    این متد رو:

     JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
                        (Request.Method.GET, URL, jsonObj, new Response.Listener<JSONObject>()
                         

    به متد زیر نغییر بدید:

    //Request.Method.GET ----> Request.Method.POST 
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
                        (Request.Method.POST, URL, jsonObj, new Response.Listener<JSONObject>()

     

    • Like 1
  14. در 19 ساعت قبل، ikhatami گفته است :

    سلام و تشکر

    من متوجه نشدم راستش من یک صفحه اصلی (main) دارم و تمام صفحات دیگر می خواهم به صورت دیالوگی در صفحه اصلی به نمایش در بیاید ولی فعالیتها در صفحات دیگر در فایلهای java متناظر وجود دارد اجرا بشه ولی الان باید با صدا زدن هر دیالوگ کدهای جاوای فعالیتهای کلیدهای دیالوگ هم داخل فایل اصلی بیاورم.

    نمی دونم تونستم منظورم را بیان کنم ؟؟

    سلام...

    به نظر من باید به صورت فرگمنتی اینکار رو انجام بدید...

    من به صورت خلاصه میگم امیدوارم کمکتون کنه و صد البته در صورت نیاز بفرمایید تا بیشتر به موضوع بپردازیم...

    در اکتیویتی مد نظرتون که قرار است دیالوگ به نمایش در بیاد کد زیر رو پیاده سازی کنید:

    public class FirstActivity extends AppCompatActivity {
    
        private Button show_dialog;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_first);
    
            show_dialog = (Button) findViewById(R.id.show_dialog);
    
            show_dialog.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    showDialog();
                }
            });
        }
    
        private void showDialog() {
            FragmentManager fragmentManager = getSupportFragmentManager();
            HelloDialogFragment newFragment = new HelloDialogFragment();
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            transaction.add(android.R.id.content, newFragment).addToBackStack(null).commit();
        }
    }

    حالا بریم سراغ فرگمنتمون...

    اول از همه یک فایل xml بسازید که بتونیم اون رو برای فرگمنت تنظیم کنیم مثلا اینجا ما فرض میکنیم که یک فایل xml داریم به اسم hello_dialog.xml و حالا به سراغ کلاس فرگمنتمون میریم:

    public class HelloDialogFragment extends DialogFragment {
    
        private View root_view;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            root_view = inflater.inflate(R.layout.hello_dialog, container, false);
    
            return root_view;
        }
    
        @NonNull
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            Dialog dialog = super.onCreateDialog(savedInstanceState);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            return dialog;
        }
    
        @Override
        public void onDestroyView() {
            super.onDestroyView();
        }
    
    }

    با این روش به راحتی هر دیالوگی که خواستید رو میتونید در اکتیویتی فراخوانی کنید و سنگین ترین کارها رو با دیالوگتون انجام بدید...

    من کدها رو تست نکردم فقط به صورت ذهنی نوشتم امیدوارم جواب بده...

    • Like 1
  15. در در 1397/09/28, 14:05:09، Pouya_su گفته است :
    25327/com.example.pouya.goharshenasi E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.pouya.goharshenasi, PID: 25327
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pouya.goharshenasi/com.example.pouya.goharshenasi.Menu}: java.lang.IllegalArgumentException: Unknown color
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2444)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2504)
            at android.app.ActivityThread.access$900(ActivityThread.java:165)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:150)
            at android.app.ActivityThread.main(ActivityThread.java:5546)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
         Caused by: java.lang.IllegalArgumentException: Unknown color
            at android.graphics.Color.parseColor(Color.java:235)
            at com.example.pouya.goharshenasi.Menu.onCreate(Menu.java:25)
            at android.app.Activity.performCreate(Activity.java:6367)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2397)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2504) 
            at android.app.ActivityThread.access$900(ActivityThread.java:165) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:150) 
            at android.app.ActivityThread.main(ActivityThread.java:5546) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684) 
     

    چیزی که مشخصه اینه که داره از رنگ ایراد میگیره و اون رو نمیشناسه...

    مطمئن بشید که از یک رنگ تعریف شده دارید استفاده میکنید...

    • Like 1
  16. در 10 ساعت قبل، Pouya_su گفته است :

    دوستان من تو یکی از اکتیویتیام ی circle menu دارم .بذنامه رو ک باز میکنم همچی حله ولی وقتی با این اکتیویتی میرم برنامه بسته میشه 

    سلام...

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

  17. در 13 ساعت قبل، bluehamed گفته است :

    از دستور compile ایراد میگیره و میگه باید با دستور implementation جایگزین بشه. ولی وقتی این کارو میکنم باز خطا میده

    
    Unable to resolve dependency for ':base@debug/compileClasspath': Could not resolve com.anysoftkeyboard.api:api:1.9.0.

     

    توی فایل gradle در بخش dependencies نسخه کتابخانه مربوطه رو بالا ببرید و با ف ی ل ت ر ش ک ن - سایفون نباشه، از نوع سیسکو استفاده کنید- پروژه رو sync کنید...

    implementation 'com.anysoftkeyboard.api:api:1.11.+'

     

  18. در 10 ساعت قبل، bluehamed گفته است :

    سلام

    من یه سورس کد از اینترنت دانلود کردم. تو اندروید استدیو باهاش کار کردم. الان یه مدته که دیگه بیلد نمیشه و همش خطا میده. خطاهارو تا جایی که تونستنم برطرف کردم. ولی باز خطا داره. میخواستم بدونم کسی هست بتونه راهنمایی کنه؟

    سلام...

    لطفا اطلاعات خطا رو هم بذارید تا بهتر بشه بررسی کرد...

  19. در 18 ساعت قبل، milad_k1 گفته است :

    لطفا اگه میشه یکی جواب بده،خیلی ممنون.

    سلام...

    در توضیح خطا داره میگه که از مسیری استفاده شده که در اون کاراکترهای غیرمجاز وجود داره...

    مسیر شما به این شکل هست:

    C:/Users/milad/Desktop/سورس کد دیکشنری

    به این نکته دقت کنید که در مسیر پروژه، شما مجاز به استفاده از حروف "انگلیسی" هستید و هر چیز دیگه ای بجز اون غیر مجاز تلقی میشه...

    پس به سادگی مسیر فایل رو عوض کنید و فقط از حروف "انگلیسی" در اون استفاده کنید...

  20. در در 1397/07/26, 10:39:25، game_builder گفته است :

    درود خدمت دوستان عزیز 

    میخواستم بدونم چجوری میشه یه برنامه برای اندازه ی صفحات مختلف ساخت . اموزشی ندیدم در این مورد مثلا موقع طراحی طرح هارو با سایز های مختلف درست میکنن برای mdpi  , ldpi , xdpi ولی من نمیدونم استانداردشون چیه یعنی اندازه رو که دارم تنظیم میکنم چقدر باید بزرگ کنم که نسبت ها تو تمام صفحات یکسان باشه یا اصلا چیزایی مثل اندازه ی فونت یا اندازه ی ui ها مثل تکست و دکمه و... اگر میشه کمی راهنمایی بکنین در این مورد که بدونم دنبال چی بگردم 

    با تشکر 

    سلام...

    تمامی این اطلاعات توسط خود گوگل ارائه شده، میتونید به لینک زیر مراجعه کنید:

    https://developer.android.com/training/multiscreen/screendensities#java

  21. در 15 ساعت قبل، saeed_75 گفته است :

    سلام.

    میخوام وقتی رو یکی از ایتم های listview کلیک میشه بره به یه اکتویتی دیگه اما محتویات اون ایتمم با خودش ببره و اونجا نمایش بده

    مثلا تو یکی از ایتم های  list view اسم و مشخصات یه نفر باشه وقتی روش کلیک میشه بره یه اکتیوتی جدید اونجا هم روی textview این مشخصاتو نشون بده

    سلام...

    میتونید به روش زیر عمل کنید:

    listview.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position,
                        long id) {
                    Intent intent = new Intent(getApplicationContext(), NextActivity.class);
    		//این تکست ویو که در اینجا ساخته میشه در واقع داره به اون آیتمی اشاره میکنه که مثلا نام کاربری رو نوشته
                    TextView textView = (TextView) view.findViewById(R.id.name);
    		String name = textView.getText().toString();
                    intent.putExtra("USERNAME", name);
                    startActivity(intent);
                }
            });

    در اکتیویتی بعدی اطلاعات رو به این صورت دریافت کنید:

    String name = getIntent().getStringExtra("USERNAME");
    username.setText(name);

     

    • Like 1
  22. در 1 ساعت قبل، kelasend گفته است :

    سلام من مجددا بررسی کردم؛ فکر کنم ارور نبود اینترنت قبل از onPostExecute اتفاق میفته!

    
    @Override
    protected void onPostExecute(String code) {
        if(code.equals("ok")){
    
            progressDialog.dismiss();
        }else{
            progressDialog.dismiss();
            Toast.makeText(G.context,"مشکلی پیش آمده است.",Toast.LENGTH_SHORT).show();
        }
    }

    الآن با این کد بازم موقع نبود اینترنت ارور میده.

     

    در این کار یک شماره همراه ارسال میشه که یه سری دیتابهش پیامک بشه اما فقط شماره ارسال میشه و یه جواب ok میگیره اگر اوکی بود.

    یه نکته خیلی ظریف اینجا هست که اکثرا موقع کار با Async باهاش مواجه میشیم. یعنی همون نبود اینترنت و قطعی اینترنت هست. این دو با هم متفاوت هستن...

    نبود اینترنت به این معنی هست که کلا گوشی کاربر به اینترنت وصل نیست (یا دیتای گوشی خاموش هست یا وای فای) که در این حالت اول باید با یک کلاس مثلا isNetworkAvailable چک بکنید که اصلا اینترنت فعال روی گوشی هست یا نه، میتونه این کار به این شکل باشه:

    private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager 
              = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }

    و بعد در متد onCreate:

    public class YourApplication extends AppCompatActivity {
        @Override
        public void onCreate() {
            super.onCreate();
            if (isNetworkAvailable()) {
                async.execute();
            } else {
                //Not connected
            }
        }
    }

    در این حالت اگر اینترنت باشه که async اجرا میشه در غیر اینصورت اصلا به مرحله اجرا نمیرسه...

    اما حالت دوم، یعنی قطعی اینترنت، که منظور نداشتن send and receive حتی در حالتی هست که کاربر به نت وصل هستش. در این حالت async اجرا شده و در متد doInBackground قرار گرفته ولی اطلاعاتی از سمت سرور طبیعتا دریافت نمیکنه. async بعد از چند ثانیه به کار doInBackground خاتمه میده و متد onPostExecute رو صدا میزنه. ببینیم چه اتفاقی میوفته:

    شما یک شرط گذاشتی:

    if (code.equals("ok"))
      // همه چیز درسته

    این قسمت درسته و کار خودش رو میکنه، اما اگر دچار قطعی اینترنت شدی عملا مقدار code برابر با null خواهد بود، که به نظر میاد هندل شده. ولی یک "نکته" بزرگ اینجا هست...

    اون else داره میگه اگر مقدار code برابر هر چیز دیگه ای به غیر از "ok" و null بود، Toast بده. پس عملا null بودن code هندل نشده و باید با یک else if اون رو هندل کنید:

    if (code == null)
    	// خطا رو هندل کنید
    else if (code.equals("ok"))
    	//همه چیز درسته
    else
    	//خطا رو هندل کنید

    ** یه نکته مهم هم بگم شاید گره از کار باز کنه: سعی کنید متد onCancelled رو هم پیاده سازی کنید - قبل از onPostExecute

    • Like 1
  23. در 18 ساعت قبل، kelasend گفته است :

    سلام، منظورتون رو دقیقا متوجه نشدم اگر جواب null باشه یعنی در

    
    onPostExecute

    اگر ما کد رو داخل یه String بریزیم در حالت نبود اینترنت هم جواب null است؟

    بله، نبود اینترنت تا قبل از دریافت string باعث میشه که مقدارش null برگرده و باید در onPostExecute بررسی بشه...

    باید ببینیم که با چه نوع داده ای داریم کار میکنیم، در AsyncTask چه عملی داره انجام میشه؟

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