برترین های انجمن

  1. Farzad Sarseifi

    Farzad Sarseifi

    مدیریت انجمن


    • امتیاز: پسندیدن (Likes)

      37

    • تعداد ارسال ها

      1,719


  2. a.khosroabadi

    a.khosroabadi

    مدیر انجمن


    • امتیاز: پسندیدن (Likes)

      25

    • تعداد ارسال ها

      124


  3. esikley

    esikley

    توسعه دهنده اندروید


    • امتیاز: پسندیدن (Likes)

      2

    • تعداد ارسال ها

      21


  4. Mohammad Amin

    Mohammad Amin

    توسعه دهنده اندروید


    • امتیاز: پسندیدن (Likes)

      2

    • تعداد ارسال ها

      5



Popular Content

Showing most liked content since ۱۷/۰۳/۲۷ in پست ها

  1. 2 likes
    سلام دوست عزیز میتونید پارامتر های زیر رو ست کنید که باعث میشه دیگه از کش نخونه هر مرتبه از رو سرور بخونه Picasso.with(context).load(url).networkPolicy(NetworkPolicy.NO_CACHE).memoryPolicy(MemoryPolicy.NO_CACHE);
  2. 2 likes
    خواهش میکنم زمانی که احتیاج باشه یک فایل رو جا به جا کنید مثلا تصمیم دارین جای یک عکس رو تغییر بدین باید این دسترسی رو داشته باشه برنامتون.
  3. 2 likes
    فرض کنید شما یه برنامه نوشتید مثلا یه برنامه مدیریت sms تصمیم دارین وقتی یک پیغام جدید میاد به صورت popup یا یه دیالوگ نشون بدین اینو. حالا ممکنه کاربر مثلا داره تو اینترنت جستجو میکنه ، و یه پیغام میاد براش این پنجره شما به صورت popup روی اون برنامه میخواهید باز بشه باید این permission رو ست کنید. کلا زمانی که تصمیم داشته باشید پنجره برنامه شما روی همه برنامه های دیگه باز بشه باید این دسترسی داشته باشه.
  4. 2 likes
    سلام دوست عزیز با دستور زیر میتونید این کارو انجام بدین String str = "Your String! ...."; String newStr = str.substring(0, str.indexOf("!"));
  5. 2 likes
    خطا مشخصه چونکه اسم فیلد تو دیتابیس img_adrs میباشد و در cursro اشتباه نوشتید اینجوری بنویسید : String imgAddress=cursor.getString(cursor.getColumnIndex("img_adrs"));
  6. 2 likes
    کاربران گرامی انجمن اندروید ایران با درود همانند روال سال های گذشته ، انجمن برنامه نویسی پی سی دروید اقدام به انتشار هدایای نوروزی نموده است ، امیدواریم هدایای این دوره عیدی خوبی برای کاربران گرامی انجمن باشد.پس در نوروز کنار ما باشید با تشکر انجمن اندروید ایران
  7. 2 likes
    سلام دوست عزیز toolbar درست ساخته نمیشه و Null هستش دلیلش این هستش که شما toolbar میسازین ولی به جای actionBar نمیزارینش قبل از خط 42 اینو اضافه کنید setSupportActionBar(toolbar);
  8. 2 likes
  9. 2 likes
    میدونی کلونی یعنی چی؟! کلونی یعنی محل تجمع، یعنی جایی که همه دور هم جمع میشن و کاری انجام میدن. میدونی که دیگه کم کم جستجو بین هزاران سایت داره منقضی و خسته کننده میشه؟! تااااااازه اگه توی هزارتا سایت بتونی مطلبی که میخواستی رو پیدا کنی مگه تبلیغات میزارن که کمی مطلبت رو بخونی ؟! دیگه نگران نباش. اپلیکیشن کلونی برای برطرف کردن این مشکلات ساخته شده. توی این برنامه میتونی تمامی خواسته هات رو برطرف کنی. اهل ورزشی؟ ماشین و موتور چی؟ به زیبایی و سلامت خودت اهمیت میدی؟ به غذاهایی که میخوری چطور؟ اوقات بیکاری چیکار میکنی؟ میدونی اگه بخوای هرکدوم از این موارد رو نگاه کنی و لذت ببری چقدر زمان نیاز داری تا بتونی واسه هر کدوم یک سایت یا یک اپلیکیشن مناسب پیدا کنی... چرا خودت رو اذیت میکنی؟ چرا حافظه موبایلت رو پر میکنی؟ چرا حجم اینترنتت رو بیخودی مصرف میکنی؟ بیا کلونی رو نصب کن و خودت رو راحت کن. بجای اینکه 100 تا سایت رو بگردی، کلونی رو 1بار بگرد ... --------------------------- ویژگی های کلونی : - بروزرسانی روزانه و مستمر - مصرف فوق العاده کم از حجم اینترنت - مصرف کم باتری و رم گوشی - رابط کاربری شیک و زیبا و ... ------------------------- دیگه زیاد توضیح نمیدم، خودت نصب کن تا متوجه شی لینک دانلود : https://cafebazaar.ir/developers/panel/apps/com.tellfa.colony/info/?l=fa ممنون میشم نصب کنید و در بازار نظر بدید
  10. 1 like
    اینکار امکان پذیر نیستش ،فقط میتونید اینکارو کنید که مجوز ها به صورت گروهی داده شود activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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" android:fitsSystemWindows="true" tools:context="info.androidhive.mpermissions.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <RelativeLayout android:id="@+id/content_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="info.androidhive.mpermissions.MainActivity" tools:showIn="@layout/activity_main"> <Button android:id="@+id/btnLaunchMultiplePermission" android:layout_below="@+id/imageView" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Request Multiple Permissions"/> <Button android:id="@+id/btnLaunchPermissionFragment" android:layout_below="@+id/btnLaunchMultiplePermission" android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Request Permission on Fragment"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/single_permission_text" android:textAlignment="center" android:layout_alignParentBottom="true" android:layout_alignParentStart="true" android:layout_marginBottom="123dp" /> </RelativeLayout> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" app:srcCompat="@drawable/ic_file_download_black_24dp" /> </android.support.design.widget.CoordinatorLayout> Manifest : <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> import android.Manifest; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.Uri; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MultiplePermissionsActivity extends AppCompatActivity { private static final int PERMISSION_CALLBACK_CONSTANT = 100; private static final int REQUEST_PERMISSION_SETTING = 101; String[] permissionsRequired = new String[]{Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}; private TextView txtPermissions; private Button btnCheckPermissions; private SharedPreferences permissionStatus; private boolean sentToSettings = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_multiple_permissions); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); permissionStatus = getSharedPreferences("permissionStatus",MODE_PRIVATE); txtPermissions = (TextView) findViewById(R.id.txtPermissions); btnCheckPermissions = (Button) findViewById(R.id.btnCheckPermissions); btnCheckPermissions.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(ActivityCompat.checkSelfPermission(MultiplePermissionsActivity.this, permissionsRequired[0]) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(MultiplePermissionsActivity.this, permissionsRequired[1]) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(MultiplePermissionsActivity.this, permissionsRequired[2]) != PackageManager.PERMISSION_GRANTED){ if(ActivityCompat.shouldShowRequestPermissionRationale(MultiplePermissionsActivity.this,permissionsRequired[0]) || ActivityCompat.shouldShowRequestPermissionRationale(MultiplePermissionsActivity.this,permissionsRequired[1]) || ActivityCompat.shouldShowRequestPermissionRationale(MultiplePermissionsActivity.this,permissionsRequired[2])){ //Show Information about why you need the permission AlertDialog.Builder builder = new AlertDialog.Builder(MultiplePermissionsActivity.this); builder.setTitle("Need Multiple Permissions"); builder.setMessage("This app needs Camera and Location permissions."); builder.setPositiveButton("Grant", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); ActivityCompat.requestPermissions(MultiplePermissionsActivity.this,permissionsRequired,PERMISSION_CALLBACK_CONSTANT); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); } else if (permissionStatus.getBoolean(permissionsRequired[0],false)) { //Previously Permission Request was cancelled with 'Dont Ask Again', // Redirect to Settings after showing Information about why you need the permission AlertDialog.Builder builder = new AlertDialog.Builder(MultiplePermissionsActivity.this); builder.setTitle("Need Multiple Permissions"); builder.setMessage("This app needs Camera and Location permissions."); builder.setPositiveButton("Grant", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); sentToSettings = true; Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivityForResult(intent, REQUEST_PERMISSION_SETTING); Toast.makeText(getBaseContext(), "Go to Permissions to Grant Camera and Location", Toast.LENGTH_LONG).show(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); } else { //just request the permission ActivityCompat.requestPermissions(MultiplePermissionsActivity.this,permissionsRequired,PERMISSION_CALLBACK_CONSTANT); } txtPermissions.setText("Permissions Required"); SharedPreferences.Editor editor = permissionStatus.edit(); editor.putBoolean(permissionsRequired[0],true); editor.commit(); } else { //You already have the permission, just go ahead. proceedAfterPermission(); } } }); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode == PERMISSION_CALLBACK_CONSTANT){ //check if all permissions are granted boolean allgranted = false; for(int i=0;i<grantResults.length;i++){ if(grantResults[i]==PackageManager.PERMISSION_GRANTED){ allgranted = true; } else { allgranted = false; break; } } if(allgranted){ proceedAfterPermission(); } else if(ActivityCompat.shouldShowRequestPermissionRationale(MultiplePermissionsActivity.this,permissionsRequired[0]) || ActivityCompat.shouldShowRequestPermissionRationale(MultiplePermissionsActivity.this,permissionsRequired[1]) || ActivityCompat.shouldShowRequestPermissionRationale(MultiplePermissionsActivity.this,permissionsRequired[2])){ txtPermissions.setText("Permissions Required"); AlertDialog.Builder builder = new AlertDialog.Builder(MultiplePermissionsActivity.this); builder.setTitle("Need Multiple Permissions"); builder.setMessage("This app needs Camera and Location permissions."); builder.setPositiveButton("Grant", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); ActivityCompat.requestPermissions(MultiplePermissionsActivity.this,permissionsRequired,PERMISSION_CALLBACK_CONSTANT); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); } else { Toast.makeText(getBaseContext(),"Unable to get Permission",Toast.LENGTH_LONG).show(); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_PERMISSION_SETTING) { if (ActivityCompat.checkSelfPermission(MultiplePermissionsActivity.this, permissionsRequired[0]) == PackageManager.PERMISSION_GRANTED) { //Got Permission proceedAfterPermission(); } } } private void proceedAfterPermission() { txtPermissions.setText("We've got all permissions"); Toast.makeText(getBaseContext(), "We got All Permissions", Toast.LENGTH_LONG).show(); } @Override protected void onPostResume() { super.onPostResume(); if (sentToSettings) { if (ActivityCompat.checkSelfPermission(MultiplePermissionsActivity.this, permissionsRequired[0]) == PackageManager.PERMISSION_GRANTED) { //Got Permission proceedAfterPermission(); } } } } Download Sample M Permissions.zip
  11. 1 like
  12. 1 like
  13. 1 like
    خوب خداروشکر خواهش میکنم موفق باشید دوست عزیز
  14. 1 like
    برای اینکه بتونید از امکانات این کتابخونه استفاده کنید باید اونو به پروژه اضافه کنید به این صورت تو فایل gradle compile 'com.nineoldandroids:library:2.4.0'
  15. 1 like
    ساخت بازی سگا (همراه با سورس و تعدادی بازی ) در این آموزش سعی شده مرحله به مرحله همراه با عکس به شما آموزش داده شود که یک بازی سگا برای سیستم عامل اندروید در کمتر از 10 دقیقه و بدون هیچ دانش برنامه نویسی بسازید. بعد از ساخت این بازی می توانید از بازی خود لذت ببرید و یا بازی خود را در یک مارکت (مثل بازار) برای فروش قرار دهید و مثل خیلی از دوستان دیگر پول خوبی بدست آورید. پس لطفا مرحله به مرحله آموزش را با دقت فراوان انجام داده و در صورت هر گونه سوال یا مشکلی با ایمیل ذکر شده در قسمت " درباره ما " تماس بگیرید. موفق باشید. لینک دانلود
  16. 1 like
    public void deleteEntry(long rowId) { database.delete(DATABASE_TABLE , KEY_ROWID + " = " + rowId, null);} فقط با شرط اسم فیلد این کار امکان پذیر میباشد
  17. 1 like
    ابتدا به آدرس زیر بروید : اسم پروژه و PackageName پروژه خودتون رو وارد کنید https://developers.google.com/mobile/add?platform=android&cntapi=signin&cntapp=Defaolt Demo App&cntpkg=com.google.samples.quickstart.signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fandroid%2Fstart%3Fconfigured%3Dtrue&cntlbl=Continue with Try Sign-In در این مرحله میبایستی گزیه Choose and configure services رو انتخاب کنید و سپس Google Sign In : در مرحله بعد میبایستید sh1 خودتون رو بدست بیارید .به مسیر زیر بروید نصب جاوا برید و فایل keytool رو اجرا کنید keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android دستور مک و لینوکس : keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android خروجی : اطلاعات SHA1 را کپی کرده و در بخش پایین وارد میکنیم در مرحله آخر فایل google-services.json را دانلود کنید و در پروژه خودتون کپی کنید سپس در فایل build.gradle : بخش project level dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.google.gms:google-services:3.0.0' } سپس در فایل build.gradle : بخش app-level apply plugin: 'com.google.gms.google-services' طراحی رابط کاربری : <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:padding="16dp" tools:context=".MainActivity" > <LinearLayout android:id="@+id/llProfile" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:orientation="horizontal" android:weightSum="3" android:visibility="gone"> <ImageView android:id="@+id/imgProfilePic" android:layout_width="80dp" android:layout_height="wrap_content" android:layout_weight="1"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:orientation="vertical" android:layout_weight="2" > <TextView android:id="@+id/txtName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:textSize="20dp" /> <TextView android:id="@+id/txtEmail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:textSize="18dp" /> </LinearLayout> </LinearLayout> <com.google.android.gms.common.SignInButton android:id="@+id/btn_sign_in" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="20dp"/> <Button android:id="@+id/btn_sign_out" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/btn_logout_from_google" android:visibility="gone" android:layout_marginBottom="10dp"/> <Button android:id="@+id/btn_revoke_access" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/btn_revoke_access" android:visibility="gone" /> </LinearLayout> import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.google.android.gms.auth.api.Auth; import com.google.android.gms.auth.api.signin.GoogleSignInAccount; import com.google.android.gms.auth.api.signin.GoogleSignInOptions; import com.google.android.gms.auth.api.signin.GoogleSignInResult; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.SignInButton; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.OptionalPendingResult; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.common.api.Status; public class MainActivity extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener { private static final String TAG = MainActivity.class.getSimpleName(); private static final int RC_SIGN_IN = 007; private GoogleApiClient mGoogleApiClient; private ProgressDialog mProgressDialog; private SignInButton btnSignIn; private Button btnSignOut, btnRevokeAccess; private LinearLayout llProfileLayout; private ImageView imgProfilePic; private TextView txtName, txtEmail; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnSignIn = (SignInButton) findViewById(R.id.btn_sign_in); btnSignOut = (Button) findViewById(R.id.btn_sign_out); btnRevokeAccess = (Button) findViewById(R.id.btn_revoke_access); llProfileLayout = (LinearLayout) findViewById(R.id.llProfile); imgProfilePic = (ImageView) findViewById(R.id.imgProfilePic); txtName = (TextView) findViewById(R.id.txtName); txtEmail = (TextView) findViewById(R.id.txtEmail); btnSignIn.setOnClickListener(this); btnSignOut.setOnClickListener(this); btnRevokeAccess.setOnClickListener(this); GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build(); mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this, this) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); // Customizing G+ button btnSignIn.setSize(SignInButton.SIZE_STANDARD); btnSignIn.setScopes(gso.getScopeArray()); } private void signIn() { Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, RC_SIGN_IN); } private void signOut() { Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback( new ResultCallback<Status>() { @Override public void onResult(Status status) { updateUI(false); } }); } private void revokeAccess() { Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback( new ResultCallback<Status>() { @Override public void onResult(Status status) { updateUI(false); } }); } private void handleSignInResult(GoogleSignInResult result) { Log.d(TAG, "handleSignInResult:" + result.isSuccess()); if (result.isSuccess()) { // Signed in successfully, show authenticated UI. GoogleSignInAccount acct = result.getSignInAccount(); Log.e(TAG, "display name: " + acct.getDisplayName()); String personName = acct.getDisplayName(); String personPhotoUrl = acct.getPhotoUrl().toString(); String email = acct.getEmail(); Log.e(TAG, "Name: " + personName + ", email: " + email + ", Image: " + personPhotoUrl); txtName.setText(personName); txtEmail.setText(email); Glide.with(getApplicationContext()).load(personPhotoUrl) .thumbnail(0.5f) .crossFade() .diskCacheStrategy(DiskCacheStrategy.ALL) .into(imgProfilePic); updateUI(true); } else { // Signed out, show unauthenticated UI. updateUI(false); } } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.btn_sign_in: signIn(); break; case R.id.btn_sign_out: signOut(); break; case R.id.btn_revoke_access: revokeAccess(); break; } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); handleSignInResult(result); } } @Override public void onStart() { super.onStart(); OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient); if (opr.isDone()) { // If the user's cached credentials are valid, the OptionalPendingResult will be "done" // and the GoogleSignInResult will be available instantly. Log.d(TAG, "Got cached sign-in"); GoogleSignInResult result = opr.get(); handleSignInResult(result); } else { // If the user has not previously signed in on this device or the sign-in has expired, // this asynchronous branch will attempt to sign in the user silently. Cross-device // single sign-on will occur in this branch. showProgressDialog(); opr.setResultCallback(new ResultCallback<GoogleSignInResult>() { @Override public void onResult(GoogleSignInResult googleSignInResult) { hideProgressDialog(); handleSignInResult(googleSignInResult); } }); } } @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { // An unresolvable error has occurred and Google APIs (including Sign-In) will not // be available. Log.d(TAG, "onConnectionFailed:" + connectionResult); } private void showProgressDialog() { if (mProgressDialog == null) { mProgressDialog = new ProgressDialog(this); mProgressDialog.setMessage(getString(R.string.loading)); mProgressDialog.setIndeterminate(true); } mProgressDialog.show(); } private void hideProgressDialog() { if (mProgressDialog != null && mProgressDialog.isShowing()) { mProgressDialog.hide(); } } private void updateUI(boolean isSignedIn) { if (isSignedIn) { btnSignIn.setVisibility(View.GONE); btnSignOut.setVisibility(View.VISIBLE); btnRevokeAccess.setVisibility(View.VISIBLE); llProfileLayout.setVisibility(View.VISIBLE); } else { btnSignIn.setVisibility(View.VISIBLE); btnSignOut.setVisibility(View.GONE); btnRevokeAccess.setVisibility(View.GONE); llProfileLayout.setVisibility(View.GONE); } } } دانلود مثال : G+Login.zip
  18. 1 like
    منظور از rowAffected این هستش که 1 سطر از جدول تغییر کرده
  19. 1 like
    سلام روز بخیر منظورتون تو دیتابیس این ستون از چه نوعی هستش؟
  20. 1 like
    تصویر رو به این صورت بزارید : به عنون مثال box_stretch.9.png و از زاویه ای که میخواید تصویر بدون افت کیفیت کشیده بشه رو انتخاب کنید
  21. 1 like
    عالیه ! گفتم که از اساتید سوال دارم ! دیدین راست گفتم استادین؟ سپاس از شما
  22. 1 like
    با همین متد هم میتونید دوباره استارت کنید اکتیویتیو Intent slideactivity= new Intent(HomeActivity.this, View_ShopActivity.class); startActivity(slideactivity);
  23. 1 like
    http://stackoverflow.com/questions/25137400/how-to-highlight-the-filtered-text-while-using-searchview-widget-in-android
  24. 1 like
    نه مشکلی به وجود نمیاره با این کد os به برنامه شما رو گوشی حافظه بیشتری اختصاص میده
  25. 1 like
    خیلی لیست زیاد دارین که توش عکس لود میکنید منابع محدود هستش. کدی که گفتم بزارین تو مانیفست و تست کنید.
  26. 1 like
    خط 26 لازم نبود خط 39 میخواستم. این خط داخل متد onCreate هستش؟ دوست عزیز خطای outOfMemory دارین. چون کامل از کدتون اطلاعی ندارم نمیتونم راهنمایی کنم که کجا داره مموری رو میخوره ولی خوب arrayLIst که دارین میسازین از عکس ها حافظه زیادی لازم داره که میتونه باعث پر شدن حافظه اپلیکیشن شما بشه. میتونید کد زیر رو تو فایل manifest تغییر بدین به این صورت که تو تگ application این کد android:largeHeap="true" را وارد کنید
  27. 1 like
    یک لاگ بزارین ببینید چه id دارین پاس میدین برای تغییر استاتوس و به نظرم یک لیست کلی هم از دیتابیس بگیرین ببینید چه اید هایی تغییر کرده
  28. 1 like
    سلام دوست عزیز خوب خطایی هم میده؟ از دیتابیس کوئری select گرفتین ببینید که تو دیتابیس تغییر کرده یا نه؟ کجا اعمال نشده ؟ تو لایوت هاتون منظورتونه اعمال نمیشه؟
  29. 1 like
    خیلی خوبه..تونستید مشکل رو حل کنید..چون مشکل خاصی نبود سوالت و همونجوری که گفتم با یک دستور ساده حل میشه
  30. 1 like
    ممنونم آقا مشکلم حل شد ، الان من آی دی سوالم رو میگیرم و با استفاده از اینتنت به اکتیویتی سوالم میارم و وقتی ک مثلا جواب صحیح بودش ، اون آیدی رو ++ میکنم و به سوال بعدی میره ، مشکلم دقیقا همین بود که متغییر هارو در جای نا مناسب معرفی و مقدار دهی میکردم،سپاسگذارم دوستان ک کمکم کردند
  31. 1 like
    بهتره که یک instance از اکتیویتی خودتون داخل فرگمنت ها ایجاد کنید : MainActivity activity = (MainActivity) getContext();
  32. 1 like
    کنترل های سفارشی: شاید این کلمه برایتان جذاب باشد که هدف از ایجاد کنترل سفارشی چیست؟ بیشتر اوقات پیش می آید قصد دارید فونت خاصی یا رنگ و استایلی را به ویجت قرار دهید.برای اینکار یکی از بهترین راهکارها ساخت کنترل سفارشی میباشد که بتوانید در همه قسمت های پروژه جاری یا بقیه پروژه ها از آن استفاده کنید میباشد. در این بخش آموزش ساخت یک TextView سفارشی را ایجاد و یک فونت مشخص را نمایش دهیم: ابتدا یک کلاس ایجاد کنید که از کلاس Textview ارث بری کند. public class PersianTextView extends TextView { public PersianTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public PersianTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public PersianTextView(Context context) { super(context); init(); } public void init() { Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "DroidNaskh.ttf"); setTypeface(tf ,1); } } تنها کافی است فونتی که قصد دارید برای نوشته ها نمایش داده شود را جایگزین کنید و آن را در پوشه assets قرار دهید. برای استفاده از کنترل سفارشی بدین صورت عمل کنید: <YourPackageName.PersianTextView android:id="@+id/txt_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="p30droid" android:textColor="#000000" android:textSize="14sp" />
  33. 1 like
    سلام دوست عزیز امیدوارم سوالتون و مشکلتونو درست متوجه شده باشم. چیزی که متوجه شدم اینه هر سوال شما 1 از ایتم هایی هست که باهاش باتم هارو ساختین.خوب حالا اگه این باتم هارو با یک لیت یا گرید یا ریسایکلر ساختین پس راحته.چون شما سوالاتو تو لیستتون دارین. وقتی کاربر یک سوالو جواب میده id این سوال یا position اونو تو اداپتر دارین.وقتی درست جواب بده میتونید id یا position سوال فعلیو یکی اضافه کنه و سوال بعدیو لود کنه. ولی اگه ایتم هارو جدا جدا چیدین یعنی لیستی وجود نداره و به هر ایتم یک سوال نسبت دادین. به نظرم به هر ایتم بر اساس ترتیبشون یک ایدی ست کنید جوری که به ترتیب باشن.وقتی به یک سوال جواب درست میده بره به ایدی سوال فعلی یکی اضافه کنه و سوال بعدیو لود کنه.
  34. 1 like
    این لایوت اصلی اکتیویتی شما میباشد LinearLayout layout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); layout = (LinearLayout) findViewById(R.id.layout); createLayoutDynamically(6); } private void createLayoutDynamically(int n) { for (int i = 0; i < n; i++) { Button myButton = new Button(this); myButton.setText("Button :"+i); myButton.setId(i); final int id_ = myButton.getId(); layout.addView(myButton); myButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(DynamicLayout.this, "Button clicked index = " + id_, Toast.LENGTH_SHORT) .show(); } }); } Layout :activity_main <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:id="@+id/layout" android:orientation="vertical"> </LinearLayout>
  35. 1 like
    باید با دیتابیس یک جدول ایجاد کنید که بدین صورت باشد id : شماره سوال Title : عنوان سوال answer : جواب،(یک عدد بین ۱ تا ۴) شما با کد های زیر لیست رو بسازید و سپس میتوانید در اکتیویتی دوم سوال رو مشاهده کنید لایوت : <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_joze" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> ساخت لیست : RecyclerView recyclerview = (RecyclerView) view.findViewById(R.id.recyclerview); List<Integer> integerList=new ArrayList<>(); for(int i=1;i<20;i++){ integerList.add(i); } recycler_sure.setVisibility(View.GONE); recycler_joze.setVisibility(View.VISIBLE); MyAdapter mAdapter = new MyAdapter(getActivity(), integerList); recyclerview.setAdapter(mAdapter); recyclerview.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); آداپتر : public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { List<Integer> mList = new ArrayList<>(); public MyAdapter(Context context, List<Integer> data) { mList = data; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.soal_row, null); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.txt_title.setText("Soal : "+mList.get(position)+""); holder.txt_id.setText(mList.get(position)+""); } @Override public int getItemCount() { return sureList.size(); } public class ViewHolder extends RecyclerView.ViewHolder { TextView txt_title,txt_id; public ViewHolder(View itemView) { super(itemView); txt_title = (TextView) itemView.findViewById(R.id.txt_title); txt_id = (TextView) itemView.findViewById(R.id.txt_id); } } } لایوت اداپتر : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="60dp"> <TextView android:id="@+id/txt_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="Test" android:textSize="20sp" /> </RelativeLayout> <TextView android:id="@+id/txt_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="Test" android:textSize="20sp" android:visibility="gone" /> </RelativeLayout> ایجاد کلاس RecyclerItemClickListener public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { private OnItemClickListener mListener; private OnItemLongClickListener mLongListener; public interface OnItemClickListener { public void onItemClick(View view, int position); } public interface OnItemLongClickListener { public void onItemClick(View view, int position); } GestureDetector mGestureDetector; public RecyclerItemClickListener(Context context, OnItemClickListener listener) { mListener = listener; mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { return true; } }); } public RecyclerItemClickListener(Context context, OnItemLongClickListener listener) { mLongListener = listener; mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { return true; } }); } @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) { View childView = view.findChildViewUnder(e.getX(), e.getY()); if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { mListener.onItemClick(childView, view.getChildAdapterPosition(childView)); } return false; } @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } } کلیک RecyclerView و انتقال شماره سوال به اکتیویتی دوم recyclerview.addOnItemTouchListener( new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) { // TODO Handle item click String txt_id=((TextView)view.findViewById(R.id.txt_id)).getText().toString(); Intent intent=new Intent(getActivity(), QuestionActivity.class); intent.putExtra("id",txt_id); startActivity(intent); } }) );
  36. 1 like
    مشکل از دستگاهی بود که تست می شد. ممنون از پیگیری شما.
  37. 1 like
    ساخت بازی سگا (همراه با سورس و تعدادی بازی ) در این آموزش سعی شده مرحله به مرحله همراه با عکس به شما آموزش داده شود که یک بازی سگا برای سیستم عامل اندروید در کمتر از 10 دقیقه و بدون هیچ دانش برنامه نویسی بسازید. بعد از ساخت این بازی می توانید از بازی خود لذت ببرید و یا بازی خود را در یک مارکت (مثل بازار) برای فروش قرار دهید و مثل خیلی از دوستان دیگر پول خوبی بدست آورید. پس لطفا مرحله به مرحله آموزش را با دقت فراوان انجام داده و در صورت هر گونه سوال یا مشکلی با ایمیل ذکر شده در قسمت " درباره ما " تماس بگیرید. موفق باشید. لینک دانلود
  38. 1 like
    عکساتون رو تو فولدر res/mipmap بزارید و اسمش رو تو دیتابیس sqlite ذخیره کنید
  39. 1 like
    این کد رو بنویسید: import java.text.SimpleDateFormat; import java.util.Date; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private TextView tvDay, tvHour, tvMinute, tvSecond, tvEvent; private LinearLayout linearLayout1, linearLayout2; private Handler handler; private Runnable runnable; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initUI(); countDownStart(); } @SuppressLint("SimpleDateFormat") private void initUI() { linearLayout1 = (LinearLayout) findViewById(R.id.ll1); linearLayout2 = (LinearLayout) findViewById(R.id.ll2); tvDay = (TextView) findViewById(R.id.txtTimerDay); tvHour = (TextView) findViewById(R.id.txtTimerHour); tvMinute = (TextView) findViewById(R.id.txtTimerMinute); tvSecond = (TextView) findViewById(R.id.txtTimerSecond); tvEvent = (TextView) findViewById(R.id.tvevent); } // //////////////COUNT DOWN START///////////////////////// public void countDownStart() { handler = new Handler(); runnable = new Runnable() { @Override public void run() { handler.postDelayed(this, 1000); try { SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd"); // Here Set your Event Date Date eventDate = dateFormat.parse("2017-12-30"); Date currentDate = new Date(); if (!currentDate.after(eventDate)) { long diff = eventDate.getTime() - currentDate.getTime(); long days = diff / (24 * 60 * 60 * 1000); diff -= days * (24 * 60 * 60 * 1000); long hours = diff / (60 * 60 * 1000); diff -= hours * (60 * 60 * 1000); long minutes = diff / (60 * 1000); diff -= minutes * (60 * 1000); long seconds = diff / 1000; tvDay.setText("" + String.format("%02d", days)); tvHour.setText("" + String.format("%02d", hours)); tvMinute.setText("" + String.format("%02d", minutes)); tvSecond.setText("" + String.format("%02d", seconds)); } else { linearLayout1.setVisibility(View.VISIBLE); linearLayout2.setVisibility(View.GONE); tvEvent.setText("Android Event Start"); handler.removeCallbacks(runnable); // handler.removeMessages(0); } } catch (Exception e) { e.printStackTrace(); } } }; handler.postDelayed(runnable, 0); } // //////////////COUNT DOWN END///////////////////////// } Layout : <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" > <LinearLayout android:id="@+id/ll1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" android:background="@drawable/counter_back" android:gravity="center" android:orientation="horizontal" android:visibility="gone" > <TextView android:id="@+id/tvevent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:singleLine="true" android:text="Android Event Start" android:textColor="#fff" android:textSize="24sp" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/ll2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="10dp" android:background="@drawable/counter_back" android:gravity="center" android:orientation="horizontal" android:visibility="visible" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/counter_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/txtTimerDay" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="00" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#fff" /> <TextView android:id="@+id/txt_TimerDay" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="Days" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#fff" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/counter_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/txtTimerHour" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="00" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#fff" /> <TextView android:id="@+id/txt_TimerHour" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="Hour" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#fff" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/counter_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/txtTimerMinute" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="00" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#fff" /> <TextView android:id="@+id/txt_TimerMinute" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="Minute" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#fff" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/counter_back" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/txtTimerSecond" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="3" android:gravity="center" android:text="00" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#fff" /> <TextView android:id="@+id/txt_TimerSecond" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="Second" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#fff" /> </LinearLayout> </LinearLayout> </LinearLayout>
  40. 1 like
    سلام تشکر از لطف شما بابت راهنمایی. عرضم به حضورتون مثل اینکه دیتابیس بدرستی جایگزین دیتابیس قبلی داخل موبایل نمیشد و با راهنمایی دوستان دیتابیس قبلی رو حذف کردم و دیتابیس جدید رو جایگزین کردم که شکر خدا مشکل حل شد این گفتم بیام جواب بدم چون ممکنه دوستان به این نکته ریز توجه نداشته باشند و ذهنشون مرتب درگیر باشه سپاس از راهنمایی شما.
  41. 1 like
    سلام مشکل حل شد floatingActionButton از حالت کامند بودن درش اوردم
  42. 1 like
    سلام توی android Studio من از کد زیر جواب گرفتم؛ امیدوارم کمک کنه String url = "cando://details?id="+PACKAGE_NAME; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i);
  43. 1 like
    فایل دیتابیسش رو پیدا کنید و اطلاعات را فارسی کنید
  44. 1 like
    خیر نمیشه،باید نسخه رو حذف کنید و مجددا منتشر نمایید.. کلید خیلی مهمه و نباید از دستش بدید
  45. 1 like
    دیتابیستون رو بزارید بررسی کنم
  46. 1 like
  47. 1 like
    خطا میکه View رو نمیشه ویرایش کرد.مطمین هستید که جداول Relation ندارند که اجازه اینکار رو نمیده
  48. 1 like
    مارکت انجمن رو ببینید شاید موارد مشابهی وجود داشته باشه http://p30droid.com/files/
  49. 1 like
  50. 1 like
    ممنون ازتون.مشکل حل شد