View Full Version : مشکل با اعمال تنظیمات در نرم افزار
Aram0630
جمعه 01 اسفند 1393, 17:47 عصر
دوستان من یه اکتیویتی و یه لی آوت واسه تنظیماتی مثل فونت و سایز نوشته ها و رنگ نوشته تو نرم افزارم گذاشتم .
همه اکتیویتی های دیگم کار می کنن اما به محض کلیک روی تنظیمات , نرم افزار فورس کلوز میده .
از دوستانی که می تونن کمکم کنن خواهش می کنم بگین کدوم قسمت ها رو بزارم تا بتونین راهنماییم کنین .
یا اینکه کل پروژه رو براشون پیام خصوصی کنم برام رفع مشکل کنن ممنون میشم .
آپدیت :
مشکل فورس کلوز رو حل کردم . الان تکست ویوها تنظیمات روشون اعمال نمیشه .
اینم نرم افزار اگه تونستین تستش کنین ممنون میشم .
http://0up.ir/do.php?filename=Azmayesh.apk
Aram0630
جمعه 01 اسفند 1393, 22:21 عصر
این فایل layout تنظیماته
<?xml version="1.0" encoding="utf-8"?><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:background="#ff4036"
android:layout_gravity="center_horizontal"
android:gravity="right"
android:orientation="vertical" >
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="تنظیمات"
android:gravity="center_horizontal"/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="right"
android:text="انتخاب قلم"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:prompt="@string/spinner_prompt" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="اندازه قلم"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:ems="10"
android:inputType="number" >
</EditText>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="رنگ قلم"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Spinner
android:id="@+id/spinner2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:prompt="@string/spinner_prompt" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="ذخيره تغييرات" />
</LinearLayout>
</LinearLayout>
اینم فایل اکتیویتی .
package com.aram0630.azmayesh;
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 Settings extends Activity {
private Spinner spinner1, spinner2;
SharedPreferences sh;
EditText et;
String font, size, color;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENT ATION_PORTRAIT);
// ÏÓÊæÑÇÊ ÈÑÇí ÐÎíÑå ÊäÙíãÇÊ
sh = getSharedPreferences("font", MODE_PRIVATE);
font = sh.getString("font", "0");
size = sh.getString("size", "20");
color = sh.getString("color", "0");
// ÊÚÇÑíÝ ÇíÏí åÇ
et = (EditText) findViewById(R.id.editText1);
TextView tv1 = (TextView) findViewById(R.id.textView1);
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.button1);
// 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(),
// "font/f10.ttf");
if (font.equals("0")) {
font1 = Typeface.createFromAsset(getAssets(), "font/BHoma.ttf");
} else if (font.equals("1")) {
font1 = Typeface.createFromAsset(getAssets(), "font/BMitra.ttf");
} else if (font.equals("2")) {
font1 = Typeface.createFromAsset(getAssets(), "font/Bziba.ttf");
} else if (font.equals("3")) {
font1 = Typeface.createFromAsset(getAssets(), "font/Niloofar.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()) <= 10
|| Integer.parseInt(et.getText().toString()) > 30) {
Toast.makeText(getApplicationContext(),
"لطفا عددی بین 10 و 30 وارد کنید .",
Toast.LENGTH_SHORT).show();
} else {
SharedPreferences.Editor shpE = sh.edit();
shpE.putString("font", Integer.toString(spinner1
.getSelectedItemPosition()));
shpE.putString("size", et.getText().toString());
shpE.putString("color", Integer.toString(spinner2
.getSelectedItemPosition()));
shpE.commit();
finish();
Toast.makeText(getApplicationContext(),
"ذخیره تنظیمات انجام شد", Toast.LENGTH_LONG)
.show();
}
}
});
}
}
الان باید چیکار کنم که تکست ویو هام این تنظیمات روشون اعمال بشه ؟
meysam jahedi
جمعه 01 اسفند 1393, 23:21 عصر
الان باید چیکار کنم که تکست ویو هام این تنظیمات روشون اعمال بشه ؟
دقیقا متوجه سوالتون نشدم ، یعنی الان مشکلتون در استفاده از این تنظیمات در دیگر اکتیویتی ها هستش و نمیدونید چطور در فرم های دیگه فونتا رو عوض کنین؟
Aram0630
جمعه 01 اسفند 1393, 23:55 عصر
اگه میشه زحمت بکشین نرم افزار رو دانلود کنین تا بهتر متوجه مشکل من بشین
وقتی توی این اکتیویتی فونت یا اندازه یا رنگ متن رو عوض می کنم فقط متن های موجود در همین اکتیویتی تغییرات روشون اعمال میشه .
باید چیکار کنم که وقتی کاربر توی تنظیمات این گزینه ها رو تغییر داد تمام متن های نرم افزار تغییر کنن ؟
meysam jahedi
شنبه 02 اسفند 1393, 00:10 صبح
اگه میشه زحمت بکشین نرم افزار رو دانلود کنین تا بهتر متوجه مشکل من بشین
وقتی توی این اکتیویتی فونت یا اندازه یا رنگ متن رو عوض می کنم فقط متن های موجود در همین اکتیویتی تغییرات روشون اعمال میشه .
باید چیکار کنم که وقتی کاربر توی تنظیمات این گزینه ها رو تغییر داد تمام متن های نرم افزار تغییر کنن ؟
شما باید برای هر چیزی که مد نظرتون هستش مثلا فونت ، یه متغیر static تعریف کنین و بهش مقدار بدید ، و بعدش مثلا تو oncreate اکتیویتی های دیگه ازش بخونین (اگه تو اکتیویتی اصلی که بیشتر باهاش سروکار دارین تعریف کنید بهتر ، یه کم بیشتر کار کنید تو این بخش دلیل این حرفمو متوجه میشید.)
خلاصه اینکه :
تو بخش تنظیمات
public static Typeface font;
تو دکمه save :
font=Typeface.createFromAsset((getAssets(), "font/BHoma.ttf"));
که بهتر اسم فونت رو متغیر بدی (این با خودتون) و اینجوری بنویسی:
font=Typeface.createFromAsset(getAssets(), "font/"+esme font+".ttf");
و بعدش توی Oncreate صفحات دیگه :
TextView.setTypeface(Settings.font);
میتونی از ShredPereferences هم استفاده کنی.
Aram0630
شنبه 02 اسفند 1393, 00:25 صبح
متاسفانه دانش برنامه نویسیم در حد صفرهتا حالا هرچند برنامه ای هم که نوشتم کدها رو کپی پیست کردم فقطببینم با فرمایشات شما به جویی می رسم !اگه نشد شرمندتون میشم و باید ساده تر برام توضیح بدین
Aram0630
شنبه 02 اسفند 1393, 10:15 صبح
آقای جاهدی پروژه م رو براتون پیام خصوصی کردم .
اگه دوتا زحمت برام بکشین ممنون میشم .
یکی این که با ذخیره تنظیمات تکست ویوهای موجود در اکتیویتیه فهرست اکتیویتیه abc تغییر کنن .
دو اینکه الان مشکل جستجو هم دارم . وقتی از جستجو استفاده می کنم اکتیویتی ها رو نشون میده پیداشون میکنه اما وقتی روشون کلیک میکنی به جای اینکه به اکتیویتیه مورد نظر بره فورس کلوز میده .
Aram0630
یک شنبه 03 اسفند 1393, 10:38 صبح
دوستان آقای جاهدی وقت ندارن منم نتونستم با راهنمایی های ایشون مشکلاتمو درستش کنم .
کسی هست بتونه کدهام رو برام جمع و جور کنه ؟ ممنون میشم .
Aram0630
شنبه 09 اسفند 1393, 08:41 صبح
کسی نیست حداقل بتونه قسمت جستجو رو برام درست کنه ؟
gilas1368
شنبه 09 اسفند 1393, 09:33 صبح
من برنامه اتون رو دان و اگ با android studio نوشته باشیدش براتون تکمیلش میکنم
Aram0630
شنبه 09 اسفند 1393, 10:45 صبح
من برنامه اتون رو دان و اگ با android studio نوشته باشیدش براتون تکمیلش میکنم
نه با اکلیپس نوشتم .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.