Farzad Sarseifi

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

    2,051
  • تاریخ عضویت

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

  • Days Won

    162

تمامی ارسال های Farzad Sarseifi

  1. آدرس رو اشتباه نوشتید "http://localhost نباید localhost بزارید.. باید بدین صورت بزارید final String url="http://127.0.0.1/local/user_report.php";
  2. سلام وقت بخیر آیا سمت سروری که طراحی کردید پیغام true یا false را ارسال میکند؟ if(result==true) { Toast.makeText(app.getBaseContext(),"Yes", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(app.getBaseContext(),"No", Toast.LENGTH_SHORT).show(); }
  3. دو مورد: 1- حتما دیتاهای ورودی رو echo بگیرید که آیا دیتا ارسال شدهاست یا خیر 2-آیا Headerنیاز ندارد برای سمت سرور ؟
  4. سلام.این flag رو ست کنید برای intent Intent a = new Intent(this,A.class); a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(a);
  5. وقتی سرور پایین باشه Volley به onErrorResponse ارجاع داده میشوید و اینجا باید مقدار false را نمایش دهید
  6. متد OnBackPress رو صدا بزنید تا بتوانید Back را کنترل کنید @Override public void onBackPressed() { new AlertDialog.Builder(this) .setTitle("Really Exit?") .setMessage("Are you sure you want to exit?") .setNegativeButton(android.R.string.no, null) .setPositiveButton(android.R.string.yes, new OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { super.onBackPressed(); } }).create().show(); }
  7. بله وقتی کاربر ClearData کنه اطلاعات Database و SHaredPrefrences پاک میشوند برای اینکه دیتابیس پاک نشود باید مسیر دیتابیس را از data/data تغییر داده و به Sdcard انتقال دهید
  8. در Manifest این Property رو به تگ application اضافه کنید مشکل پاک شدن SharedPrefences حل میشه allowBackup="true"
  9. کدام اپلیکیشن را میخواهید دانلود کنید که این اتفاق میوفته ؟
  10. در این مقاله آموزشی قصد داریم بیاموزیم که به چه صورتی میتوانیم از کلاس و Property های آن در Kotlin استفاده کنیم اما قبل از اینکه از این آموزش را مطالعه کنید در جلسات قبلی مفاهیم اولیه زبان کاتلین را قرار داده ایم و میتوانید آنها را مطالعه کنید Class ها در کاتلین : اگر شما قبلا به مفاهیم برنامه نویسی شی گرا OOP در بقیه زبان های برنامه نویسی آشنا هستید اینکار برای شما آشنا خواهد بود تا بتوانید کلاس ها در کاتلین را فرابگیرید در جاوا برای اینکه بتوانید هر کلاسی را ایجاد کنید حتما باید کلاس را تعریف کنید و سپس سازنده اش را و سرانجام متدهای setter و getter را در کاتلین تمامی این پارامترها به فیلدها اعمال شده و نیازی به تعریفشان نیست این واضح است که کدهای جاوا 11 خط میباشد و کاتلین فقط یک خط. این نشان میدهد چقدر زبان کاتلین میتواند جذاب باشه و در زمان صرفه جویی کرده و کدهای کمتری نوشته شود. یک نکته مهم برای تعریف کلاس ها در کاتلین این میباشد که نیازی به تعریف public در تعریف قبل از نام class نیست و بصورت پیشفرض تمامی کلاس ها public هستند Properties ویژگی های کلاس در کاتلین بطور عمومی متغیرهای داخل کلاس پرایویت هستند و بطور مستقیم نمی توانید به آنها دسترسی داشته باشید. برای دسترسی به فیلدها باید ست و گت را ایجاد کنید در زبان های شی گرا این ترکیب شناخته شده ای برای فیلدها هستش ،در کاتلین متدها جایگیزین مقادیر میشوند شما میتوانید به دو صورت مشخصات را تعریف کنید اگر شما با کلمه val تعریف کنید فقط توانایی Read-only دارد یعنی قابل نوشتن نیست اما اگر بصورت var تعریف کنید بصورت نوشتنی و خواندنی میباشد مثال زیر مشخص میکند به چه صورتی میتوانیم یک Object را تعریف و از آن استفاده کنیم نتیجه گیری : در این آموزش آموختیم که به چه صورتی میتوانیم کلاس ها را تعریف و به Property های آن دسترسی پیدا کرد
  11. منظورتونه که فایل ttf فونت رو هم به اشتراک بگذاره ؟
  12. براساس مستندات خود گوگل قراره از ورژن 3 به بالاتر بطور کامل قرار میگیره. قبلش با پلاگین هستش . اما شاید نسخه بتا برای اپدیت های زیر 3 هم بیاد که کاتلین رو ساپورت کنه
  13. نصب پلاگین Kotlin در اندروید استودیو در صورتی که نسخه اندروید استودیو کمتر از 3 باشد حتما میبایستی پلاگین Kotlin را در اندروید استودیو نصب کنید از منوی پلاگین های intellij گزینه plugin را نصب کنید روی گزینه Install jetBrains Plugin کلیک کنید سپس در کادر زیر Kotlin را جستجو کنید سپس گزینه install را انتخاب کنید تا پلاگین Kotlin بر روی اندروید استودیو نصب کنید و بتوانید از Kotlin در برنامه نویسی اندروید استفاده کنید
  14. وقتی R خطا میگیره حتما باید res رو چک کنید که دارای خطا نباشد
  15. 1- شما باید یک دیتابیس و سه تا جدول ایجاد کنید 2- برای منطق اینکار شما باید با استفاده از id کاربر اینکار رو انجام بدید به این صورت که هر کاربر میتونه این فیلدها رو داشته باشه id : کد کاربر username : نام کاربری 3- در جدول محصولات: id : کد محصول title: نام محصول 4- یک جدول برای سفارشات ایجاد کنید id : شماره سفارش product_id : شماره محصول user_id : کد کاربر
  16. برای دیتابیس حتما باید در متد onUpgrade دیتابیس رو Upgrade کنید تا اطلاعات از بین نروند و دیتاهای جدید نیز بروز رسانی شوند
  17. کتابخانه BottomNavigationView در داخل کتابخانه deisgn از ورژن 25 به بالاتر وجود دارد داکیومنت گوگل : https://developer.android.com/reference/android/support/design/widget/BottomNavigationView.html برای پیاده سازی استفاده از BottomNavigationView میابیستی مراحل زیر را بطور کامل انجام دهید : 1- ابتدا Dependencyها را در فایل app->build.gradle وارد نمایید compile 'com.android.support:appcompat-v7:25.1.0' compile 'com.android.support:design:25.1.0' compile 'com.android.support:support-v4:25.1.0' 2- فرگمنت ها : همانطور که مطلع هستید برای نمایش تب های هر کدام از گزینه های BottomNavigationView میبایستی فرگمنت های مربوطه را طراحی کرد. در این مثال فرض میگیریم 3 تب داریم پس باید 3 فرگمنت ایجاد کنیم. Fragment 1: fragment_item_one.xml <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" tools:context="com.truiton.bottomnavigation.ItemOneFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 1" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemOneFragment extends Fragment { public static ItemOneFragment newInstance() { ItemOneFragment fragment = new ItemOneFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_one, container, false); } } Fragment 2: fragment_item_two.xml <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" tools:context="com.truiton.bottomnavigation.ItemTwoFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 2" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemTwoFragment extends Fragment { public static ItemTwoFragment newInstance() { ItemTwoFragment fragment = new ItemTwoFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_two, container, false); } } Fragment 3: fragment_item_three.xml <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" tools:context="com.truiton.bottomnavigation.ItemThreeFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 3" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemThreeFragment extends Fragment { public static ItemThreeFragment newInstance() { ItemThreeFragment fragment = new ItemThreeFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_three, container, false); } } 3- منو ها: در این مرحله میبایستی منوها را ایجاد نمایید از مسیر res->menu bottom_navigation_items.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_item1" android:icon="@drawable/ic_account_box_black_24dp" android:title="@string/item_1"/> <item android:id="@+id/action_item2" android:icon="@drawable/ic_account_circle_black_24dp" android:title="@string/item_2"/> <item android:id="@+id/action_item3" android:icon="@drawable/ic_assignment_ind_black_24dp" android:title="@string/item_3"/> </menu> 4- در این مرحله طراحی ظاهر کاربری اکتیویتی اصلی را انجام میدهیم : در این مرحله از تگ BottomNavigationView استفاده میکنیم <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/activity_main" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.MainActivity"> <FrameLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/navigation" android:animateLayoutChanges="true"> </FrameLayout> <android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@color/colorPrimary" app:itemIconTint="@color/nav_item_state_list" app:itemTextColor="@color/nav_item_state_list" app:menu="@menu/bottom_navigation_items"/> </RelativeLayout> 5- در این مرحله میبایستی BottomNavigation را در اکتیویتی تعریف نماییم import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation); bottomNavigationView.setOnNavigationItemSelectedListener (new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Fragment selectedFragment = null; switch (item.getItemId()) { case R.id.action_item1: selectedFragment = ItemOneFragment.newInstance(); break; case R.id.action_item2: selectedFragment = ItemTwoFragment.newInstance(); break; case R.id.action_item3: selectedFragment = ItemThreeFragment.newInstance(); break; } FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_layout, selectedFragment); transaction.commit(); return true; } }); //Manually displaying the first fragment - one time only FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_layout, ItemOneFragment.newInstance()); transaction.commit(); //Used to select an item programmatically //bottomNavigationView.getMenu().getItem(2).setChecked(true); } } خروجی : با سپاس فرزاد سرسیفی
  18. سلام برای دیتابیس اگر تغییراتی اعمال کنید Version code دیتابیس را افزایش دهید همچنین وقتی اپ اپدیت میشود اطلاعات پاک نخواهد شد
  19. مشاهده فایل سورس پروژه ذکرشمار ذکرشمار نرم افزاری است برای ارتباط با خدا. این نرم افزار شامل ذکر ایام هفته و تعدادی اذکار صوتی دیگر است. شما می توانید از این اذکار زیبا برای خود تسبیحی بسازید و حتی می توانید ذکر دلخواه خود را به آن اضافه کنید. به این ترتیب ذکر ویاد خدا همیشه و همه جا همراه شما و گره گشای مشکلات شما خواهد بود. البته لازم به ذکر است که تعداد اذکار در این نسخه که نسخه اولیه می باشد، محدود است اما امید است که به لطف خدا در نسخه های بعدی افزایش یابد. این برنامه بدین صورت عمل میکند که با حرکت انگشت دانه های تسبیح حرکت میکنند و بعد از 33 حرکت تسبیح تمام میشود و به اول تسبیح برمیگردیم.همچنین دارای ویبره بعد انداختن هر دانه تسبیح همراه با شمارنده تعداد تسبیح های انداخته شده میباشد. دریافت نسخه دمو : Tasbih.apk ارسال کننده Farzad Sarseifi ارسال ۱۷/۰۳/۳۱ دسته سورس پروژه اندروید
  20. این کتابخانه ها را تست کنید https://github.com/aurelhubert/ahbottomnavigation https://github.com/roughike/BottomBar
  21. میتونید برای صفحه مورد نظر یک header بزارید به این صورت که اگر از طرف اندروید درخواست فرستادید header رو ارسال کنید . بدین صورت : @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("OSTYPE", "ANDROID"); return headers; } بعد سمت سرور چک کنید اگر هدر ANDROID نداشت ارور را نمایش دهد
  22. آیا آدرس در داخل sdcard میباشد یا اینترنت؟
  23. از ListView خارج کنید و با RecyclerView کار کنید تا مشکل memory کمتر پیش بیاید