آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال در مورد SharedPreferences

علی  11 سال پیش  11 سال پیش
0 0

سلام:

وقتی Login میشه طرف مقدار username که من با شماره موبایل طرف ست کردم ریخته میشه داخل  SharedPreferences .

که در داخل یک TextView نشون میده.

حالا یک اکتیویتی دیگه دارم که می خوام شرط بزارم که اگه لاگین کرد و مقدار ریخته شد بتونه بره داخل یک اکتیویتی دیگه والا بگه شما باید ثبت نام کنید. 

حالا داخل if چی بزارم تا کار کنه؟

 
private SharedPreferences sp;


   imgCooperation.setOnClickListener(new View.OnClickListener() {

           @Override
           public void onClick(View v) {
        	   sp=getActivity().getApplicationContext().getSharedPreferences("userP", 0);
             if(  ){
        	
            	 Toast.makeText(getActivity().getApplicationContext(), "لطفاُ اول ثبت نام بفرمایید.", Toast.LENGTH_LONG).show();
             }else{
            
            	   CooperationFragment nextFrag= new CooperationFragment();
            	   getFragmentManager().beginTransaction()
          	     .replace(R.id.frame_container, nextFrag)
          	     .addToBackStack(null)
          	     .commit();
             }
           }
           
       });



0 0
این هم در Main اصلی وقتی که شماره تلفن میاد داخل TextView (11 سال پیش)
 برای این سوال 6 پاسخ وجود دارد.
پاسخ به سوال 
علی  11 سال پیش
0 0

  img_login.setOnClickListener(new View.OnClickListener() {

	            @Override
	            public void onClick(View v) {

	                Intent intent = new Intent(MenuMainActivity.this, Login.class);
	                startActivity(intent);
	              

	            }
	        });
	     
		 sp= getApplicationContext().getSharedPreferences("userP", 0);
  		 String s= sp.getString("mobilee", "");
    
  	   	name.setText(s);
  	  
	}
0 0
فکر نکنم کار خاصی داشته باشه. شما یک فرق تو لاگین بودن و نبودن پیدا کنید بعد سر همون بگید اگر اینطوری بود بره تو اکتیویتی و اگر اونطوری بود نره. (11 سال پیش)
0 0
خوب با این کدهایی که گذاشتم شما نمی تونی بگی چی بزارم؟ من که نفهمیدم چه فرقی رو پیدا کنم. (11 سال پیش)
0 0
راستی حتما باید داخل setOnClickListener تعریف کنم یا میشه داخل خود اکتیویتی لاگین هم این شرط رو گذاشت؟ (11 سال پیش)
0 0
خب دقیق تر بگید چی کار می خواید بکنید؟ مثلا وقتی فردی لاگین می شه چه اتفاقی می افته و بعد اگر لاگین بود چه اتفاقی باید بیافته که اگر لاگین نبود نشه؟ (11 سال پیش)
0 0
من میام داخل برنامه که NavigationDrawer دارم . کل برنامه باز میشه . قسمت بالای Listview کشویی قسمت ثبت نام گذاشتم که ثبت نام می کنم و بعد وارد میشم. وقتی لاگین می کنم و وارد میشم username اون بالا نمایش داده میشه با textview. حالا من در یک فرگمنت دیگه قسمت همکاری دارم که میام یه سری فیلدها رو پر می کنم و با همون username که ثبت شده میفرستم به دیتابیس سرور. حالا اگه لاگین کردم بتونه بره تو قسمت لاگین. چون اگه ثبت نام صورت نگیره نمی فهمم مال کی بوده . (11 سال پیش)
0 0
ببخشید اخرش اشتباه تایپی شد. حالا اگه لاگین کردم بتونه بره تو قسمت همکاری. (11 سال پیش)
پاسخ به سوال 
وحید  11 سال پیش
0 0

نگاه کنید مثلا میگم که کار دستتون بیاد. می شه این تکست ویو که بعد از لاگین کردن نام یا شماره ی طرف رو نشون می ده چک کنید. بگید اگر خالی بود یعنی لاگین نکرده و اگر پر شده بود بگه طرف لاگین شده. یا مثلا این تکست ویو در صورتی که کاربر لاگین نشده باشه به صورت پیش فرض نوشته <میهمان> بعد شما چک کنید که اگر متن این تکست ویو برابر با میهمان بود یعنی لاگین نیست و اگر مخالف با میهمان بود یعنی نام یا شماره کاربر نوشته شده بود طرف لاگین شده و کد رو به این صورت در setonclick دکمه ی رفتن به صفحه ی هماکاری بذارید.

 btnHamkari.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
String nameTextView = txtName.getText().toString();
if (nameTextView.equals("میهمان")) {
Toast.makeText(G.context, "لطفا وارد شوید", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(MainActivity.this, ActivityHamkari.class);
MainActivity.this.startActivity(intent);
}
}
});

 

0 0
یا می تونید مثلا وقتی یکی لاگین می کنه یک متغیر boolean با مقدار true در یک SharedPreference ذخیره کنید. بعد هرجا که خواستید استفاده کنید و وقتی خروج رو زد این مقدار SharedPreference برابر با false شه. (11 سال پیش)
0 0
خوب من اون textview که در main اصلی دارم چطوری بیارمیش اینجای که کد رو نوشتید؟ منظورم اونیه که ست میشه . (11 سال پیش)
0 0
به جای اون equals("میهمان") میشه یه چیز دیگه گذاشت؟ مثلا وقتی شماره بود نه اینکه فقط میهمان نوشته بود؟ (11 سال پیش)
0 0
اون روش بالا رو که کد زدید رو اعمال کردم ولی ارور NullPointerException میده به خط String nameTextView... (11 سال پیش)
0 0
می تونید این قسمت کدتون رو بذارید؟ (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

   txtName=(TextView) rootView.findViewById(R.id.txtM);
      
	   
       imgCooperation.setOnClickListener(new View.OnClickListener() {

           @Override
           public void onClick(View v) {
        	   String nameTextView = txtName.getText().toString();
        	   if (nameTextView.equals("ورود به سیستم")) {
        		   Toast.makeText(G.context, "لطفا وارد شوید", Toast.LENGTH_SHORT).show();
        	   }else{
            	   CooperationFragment nextFrag= new CooperationFragment();
            	   getFragmentManager().beginTransaction()
          	     .replace(R.id.frame_container, nextFrag)
          	     .addToBackStack(null)
          	     .commit();
             }
         
           }
       });
0 0
دیگه نمی دونم، باید کار کنه. (11 سال پیش)
0 0
ممکنه از این باشه که من یه جا دیگه یعنی در main اصلی دارم از همون textView استفاده می کنم ؟ که خطا میده؟ (11 سال پیش)
0 0
فکر نکنم. حالا یه سوال. کاربر وقتی در برنامه لاگین می شه خارج شدنش دست خودش هست؟ به نظر من یک SharedPreference بولین با مقدار false تعریف کنید و در دکمه لاگین بگید که اگر روی دکمه لاگین کلیک شد و کانکت شد مقدار بولین true باشه و زمانی که کاربر روی دکمه خروج کلیک کرد این مقدار برابر false بشه . اینطوری بهتره و می تونید تو هرجای برنامه ازش استفاده کنید. مثلا هرجا نیاز بود که ببینید کاربر لاگین کرده یا نه کافیه مقدار این sharedpreference رو بگیرید و بگید اگر برابر true بود (یعنی لاگین شده) کار انجام بشه و اگر false بود (یعنی لاگین نشده. اگر کد sharedPreference بلد نیستید بگید تا بذارم. (11 سال پیش)
0 0
من یه checkbox گذاشتم وقتی لاگین میکنه میتونه اون تیک رو بزنه تا در حالت ورود نگه داره و وقتی بخواد کلا خارج شه این کد رو در main اصلی گذاشتم دیگه true و false رو نمی دونم . (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

  img_off.setOnClickListener(new View.OnClickListener() {

	            @Override
	            public void onClick(View v) {

	            	sp=getApplicationContext().getSharedPreferences("userP", 0);
			    	Editor edit=sp.edit();
			    	edit.putString("mobilee", "");
			    	edit.putInt("status", 0);
			    	edit.commit();
					
			    	finish();
	              

	            }
	        });
0 0
داداش من مشکلم اینجوری حل شد : (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

 imgCooperation.setOnClickListener(new View.OnClickListener() {

           @Override
           public void onClick(View v) {
        	   sp=getActivity().getApplicationContext().getSharedPreferences("userP", 0);
            	Editor edit=sp.edit();
          	    edit.putString("mobilee", "");
        	   if (sp.getString("mobilee", "")== "") {
        		   
        		   Toast.makeText(G.context, "لطفا وارد شوید", Toast.LENGTH_SHORT).show();
        		
        	   }else{
        		   CooperationFragment nextFrag= new CooperationFragment();
            	   getFragmentManager().beginTransaction()
          	     .replace(R.id.frame_container, nextFrag)
          	     .addToBackStack(null)
          	     .commit();
            	  
             }
         
           }
       });
0 0
بعد از این همه بالا پایین کردن درست شد . حالا هر وقت اومدی بهم بگو چطور این کد رو واسه اینجا بکار ببرم . قسمت main اصلی که Navigation Drawer هستش و لیست ویو داره. (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

 	private void displayView(int position) {
		// update the main content by replacing fragments
		 selectedPosition = position;
		Fragment fragment = null;
		switch (position) {
		
		case 0:
			fragment = new HomeFragment();
		break;
		case 1:
			fragment = new ProductFragment();
		break;
		case 2:
			fragment = new ResellerFragment();
		break;
		case 3:
			fragment = new CooperationFragment();    =====> یرای این
		break;
		case 4:
			fragment = new NewsFragment();
		break;
		case 5:
			fragment = new MessageFragment();
		break;
		case 6:
			fragment = new AboutUsFragment();
		break;
		case 7:
			fragment = new GalleryFragment();
		break;
		case 8:
			fragment = new ContactFragment();
	    break;
		case 9:
			fragment = new ExitFragment();
		
		

		default:
			break;
			
		}

		if (fragment != null) {
			FragmentManager fragmentManager = getFragmentManager();
			fragmentManager.beginTransaction()
					.replace(R.id.frame_container, fragment)  .commit();
			
			
			
			
			        

			// update selected item and title, then close the drawer
			mDrawerList.setItemChecked(position, true);
			mDrawerList.setSelection(position);
			setTitle(navMenuTitles[position]);
			mDrawerLayout.closeDrawer(cDrawerList);
		} else {
			// error in creating fragment
			Log.e("MainActivity", "Error in creating fragment");
		}
	}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .