انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارسال اطلاعات بین اکتیویتیها در برنامه اندروید

ارسال اطلاعات بین اکتیویتیها در برنامه اندروید

#1
سلام . خواهش میکنم یکی کمک کنه . من میخوام یه بخش تنظیمات تو پروژم قرار بدم یعنی مثلا بتونم نوع و رنگ و اندازه فونت رو تو کل اکتیویتیها تغییر بدم اما نمیدونم چجوری اینکار رو بکنم .

البته یک اکتیویتی ساختم که توش دو تا اسپینر گذاشتم سه تا تکست ویو با یک باتون و یک ادیت تکست مشکلم اینجاست که وقتی ذخیرش میکنم نوشته های همین اکتیویتی تغییر میکنه و ذخیره میشه و بقیه اکتیویتی ها تغییر نمیکنه باید چیکار کنم که این تغییرات تو همه اکتیویتیها یا اون کلاس هایی که خودم میخوام اعمال بشه ؟

اینم کد :

کد:
package com.test;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class Main extends Activity {

private Spinner spinner1,spinner2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);

final SharedPreferences shpsettings = getSharedPreferences("font", MODE_PRIVATE);
String font , size,color; {
font = shpsettings.getString("font", "0");
size = shpsettings.getString("size", "20");
color = shpsettings.getString("color", "0");


final EditText et=(EditText)findViewById(R.id.editText1);
TextView tv1=(TextView)findViewById(R.id.sekel);
TextView tv2=(TextView)findViewById(R.id.textView2);
TextView tv3=(TextView)findViewById(R.id.textView3);
spinner1 =(Spinner)findViewById(R.id.spinner1);
spinner2 =(Spinner)findViewById(R.id.spinner2);
Button btn=(Button)findViewById(R.id.sisil);

//size
et.setTextSize(Float.parseFloat(size));
tv1.setTextSize(Float.parseFloat(size));
tv2.setTextSize(Float.parseFloat(size));
tv3.setTextSize(Float.parseFloat(size));
btn.setTextSize(Float.parseFloat(size));


//color
int c = 0;
if(color.equals("0"))
{
c=Color.BLACK;
}
else if(color.equals("1"))
{
c=Color.WHITE;
}
else if(color.equals("2"))
{
c=Color.RED;

}
else if(color.equals("3"))
{
c=Color.BLUE;
}
et.setTextColor(c);
tv1.setTextColor(c);
tv2.setTextColor(c);
tv3.setTextColor(c);
btn.setTextColor(c);


//font
Typeface font1 = null ;//= Typeface.createFromAsset(getAssets(), "arial.ttf");


if(font.equals("0"))
{
font1=Typeface.createFromAsset(getAssets(), "BMorvarid.ttf");
}
else if(font.equals("1"))
{
font1=Typeface.createFromAsset(getAssets(), "BKOODB.TTF");
}
else if(font.equals("2"))
{
font1=Typeface.createFromAsset(getAssets(), "andlso.ttf");

}
else if(font.equals("3"))
{
font1=Typeface.createFromAsset(getAssets(), "Far_Aman.ttf");
}

et.setTypeface(font1);
tv1.setTypeface(font1);
tv2.setTypeface(font1);
tv3.setTypeface(font1);
btn.setTypeface(font1);




et.setText(size);

final List<String> list = new ArrayList<String>;();

list.add("نازنین");
list.add("تیتر");
list.add("آفاق");
list.add("رفاقت");

final ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>;(this, android.R.layout.simple_spinner_item,list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(dataAdapter);
spinner1.setSelection(Integer.parseInt(font));



final List<String> list1 = new ArrayList<String>;();

list1.add("سیاه");
list1.add("سفید");
list1.add("قرمز");
list1.add("آبی");

final ArrayAdapter<String> dataAdapter1 = new ArrayAdapter<String>;(this, android.R.layout.simple_spinner_item,list1);
dataAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(dataAdapter1);
spinner2.setSelection(Integer.parseInt(color));


btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (Integer.parseInt(et.getText().toString())<=0 || Integer.parseInt(et.getText().toString())>30)
{
Toast.makeText(getApplicationContext(),"اندازه قلم باید عددی بین 0 تا 30 باشد", Toast.LENGTH_SHORT).show();
}
else
{
SharedPreferences.Editor shpE= shpsettings.edit();

shpE.putString("font",Integer.toString(spinner1.getSelectedItemPosition ()));
shpE.putString("size", et.getText().toString());
shpE.putString("color",Integer.toString(spinner2.getSelectedItemPosition ()));
shpE.commit();
Toast.makeText(getApplicationContext(), "تغییرات با موفقیت ذخیره شد", 1).show();

}
}
});

}
}
}
پاسخ

ارسال اطلاعات بین اکتیویتیها در برنامه اندروید

#2
سلام.
شما باید از SharedPreferences برای ذخیره تنظیمات برنامه استفاده کنید. 
در این مورد، کلیدهای موجود در دسته بندی زیر را بخوانید :

http://www.kelidestan.com/keys/categorie...ategory=10

کلید زیر، چگونگی ذخیره تنظیمات با استفاده از  SharedPreferences را شرح می دهد :

http://www.kelidestan.com/keys/keys.php?key=248

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ارسال اطلاعات بین اکتیویتیها در برنامه اندروید

#3
(۱۳۹۳/۰۶/۲۵, ۰۵:۵۲ ب.ظ)'admin' نوشته: سلام.
شما باید از SharedPreferences برای ذخیره تنظیمات برنامه استفاده کنید. 
در این مورد، کلیدهای موجود در دسته بندی زیر را بخوانید :

http://www.kelidestan.com/keys/categorie...ategory=10

کلید زیر، چگونگی ذخیره تنظیمات با استفاده از  SharedPreferences را شرح می دهد :

http://www.kelidestan.com/keys/keys.php?key=248



 

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

 
پاسخ

ارسال اطلاعات بین اکتیویتیها در برنامه اندروید

#4
بنابراین شما می خواهید که مثلا کل TextView های برنامه اندروید (یا اینکه تعداد زیادی از آنها)، دارای یک سری ویژگی باشند و مجبور نشوید که با ساخت هر TextView جدید، دوباره آن ویژگی ها را برای آن تعیین کنید.
برای راه حل، دو راهی که به ذهن من میرسه :

1- یک کلاس (class) بسازید که در ورودی خود، مثلا عنصر TextView را دریافت می کند و کدهای کلاس ( class ) هم به این صورت خواهد بود که یک سری ویژگی برای آن عنصر  TextView تعیین خواهد کرد.
بعد از ساخت این کلاس ( class )، درون هر Activity که  TextView دارید و می خواهید آن ویژگی ها را داشته باشد، یک شیء ( object ) از روی کلاس ( class ) بسازید و ویژگی های  TextView را توسط شیء ( class ) ساخته شده، تغییر بدهید.
برای دانستن اینکه چگونه یک کلاس ( class ) بسازید که یک ورودی داشته باشد و همچنین چگونه از روی آن یک شیء ( object ) بسازیم، کلید زیر را بخوانید :

http://www.kelidestan.com/keys/keys.php?key=342

2- خود عنصر  TextView را توسعه (extend) بدهید و یک سری ویژگی جدید به آن اضافه کنید و از این به بعد، به جای نام  TextView ، باید نام عنصر توسعه یافته آن را در کدهای فایل xml بنویسید (در واقع یک عنصر جدید است که از توسعه  TextView ساخته می شود و از این به بعد، از آن استفاده می کنیم).
در این مورد، نگاهی به کلید زیر بیندازید که در آن، عنصر ImageView توسعه داده شده است تا یک عنصر جدید با ویژگی های جدید ساخته شود :

http://www.kelidestan.com/keys/keys.php?key=2409

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط شماره مجازی امارات


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان