رفتن به مطلب
  • 0

ذخیره نشدن آیتم های اسپینر در دیتابیس


msms

سوال

با سلام خدمت تمامی دوستان

مشکل از اونجا شروع میشه که برای بار اول برنامه رو باز می کنی با خطا مواجه میشی ولی وقتی میری صفحه تنظیمات،و تغییرات رو اعمال می کنی برنامه وارد صفحه متن میشه و مشکل اولی حل میشه .

از برنامه که خارج میشی و دوباره برمی گردی باز همون مشکل هست؟

'کدهای صفحه تنظیمات
Sub Process_Globals
	Dim sql As SQL,cur As Cursor
	Dim fontsize As Int
	Dim font As String
End Sub

Sub SeekBar_ValueChanged (Value As Int, UserChanged As Boolean)
	lblnmun.TextSize = Value
End Sub

Sub spinner_ItemClick (Position As Int, Value As Object)
	lblnmun.Typeface = Typeface.LoadFromAssets(Value&".ttf")
End Sub

Sub sabt_click
	Dim cur As Cursor
	cur =  sql.ExecQuery ("SELECT * FROM setting")
	cur.Position=0
	
	sql.ExecNonQuery("UPDATE setting SET fontsize ="&seekbar1.Value)
	sql.ExecNonQuery("UPDATE setting SET font ="&spinner1.SelectedIndex)
	
	fontsize = seekbar1.Value
	font = spinner1.GetItem(spinner1.SelectedIndex)
	ToastMessageShow("تنظیمات ذخیره شد",False)
	Activity.Finish
End Sub

'کدهای صفحه متن
	Dim matn As Label:matn.Initialize(""):matn.TextColor=Colors.DarkGray
	matn.Text=content
matn.TextSize = actSettings3.fontsize
matn.Typeface = Typeface.LoadFromAssets(actSettings3.font &".ttf")

در قسمت متن چطوری مشکل رو حل کنم؟

دوستان کمک کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

12 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام بر شما

اول پیشنهاد می کنم به جای استفاده از دیتابیس برای ذخیره تنظیمات از AriaSharedPreferences استفاده کنید.

نکته دوم هم اینه که همیشه یک مقدار پیشفرض برای متغیرهای تنظیمات خودتون قرار بدید.

و در جواب سوال شما اینکه سابی برای لود اطلاعات ذخیره شده نمیبینم. اگه یادتون رفته بنویسید و احتمالا مشکل در نبود اون. یافراخوانی نکردن اون باشه

«موفق باشید.»

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

در صفحه متن، قبل از کدهای زیر چی بنویسم که برنامه برای بار اول ارور نده

matn.TextSize = actSettings3.fontsize
matn.Typeface = Typeface.LoadFromAssets(actSettings3.font &".ttf")

یعنی اول ی متن با سایز و فونت دیگه لود کنه بعد اینکه کاربر تنظیمات رو اعمال کرد دیگه بره از اونجا تنظیمات رو لود کنه!

بازم ممنون از راهنمایی هاتون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

'کدهای صفحه تنظیمات
Sub Process_Globals
	Dim sql As SQL,cur As Cursor
	Dim fontsize As Int
	Dim font As String
End Sub

Sub SeekBar_ValueChanged (Value As Int, UserChanged As Boolean)
	lblnmun.TextSize = Value
End Sub

Sub spinner_ItemClick (Position As Int, Value As Object)
	lblnmun.Typeface = Typeface.LoadFromAssets(Value&".ttf")
End Sub

Sub sabt_click
	sql.ExecNonQuery("UPDATE setting SET fontsize ="&seekbar1.Value)
	sql.ExecNonQuery("UPDATE setting SET font ="&spinner1.SelectedIndex)
	
	fontsize = seekbar1.Value
	font = spinner1.GetItem(spinner1.SelectedIndex)
	ToastMessageShow("تنظیمات ذخیره شد",False)
	Activity.Finish
End Sub
  
  'کدهای صفحه متن
Load
Dim matn As Label:matn.Initialize(""):matn.TextColor=Colors.DarkGray
matn.Text=content
matn.TextSize = actSettings3.fontsize
matn.Typeface = Typeface.LoadFromAssets(actSettings3.font &".ttf")
'''ساب لود
Sub Load
	Dim cur As Cursor
	cur =  sql.ExecQuery ("SELECT * FROM setting")
	cur.Position=0
	actSettings3.fontsize = cur.getString("fontsize")
	actSettings3.font = cur.getString("font")
End Sub

کد بالا رو امتحان کن

ساب Load برای گرفتن اطلاعات از دیتابیس رو اضافه کردم

«موفق باشید.»

لینک ارسال
به اشتراک گذاری در سایت های دیگر

 در جدول تنظیمات بهتره باید به طور پیشفرض یه مقادیر باشه

من فرض رو بر این گذاشته بودم

یه چکی بکن

:53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خطا رو بفرست تا بشه کاری کرد

اینجوری نمیشه فهمید چی به چیه

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر


Error occurred on line: 61 (msgViewer)
java.io.FileNotFoundException: /storage/emulated/0/Android/data/b4a.example/files/virtual_assets/.ttf: open failed: ENOENT (No such file or directory)
	at libcore.io.IoBridge.open(IoBridge.java:409)
	at java.io.FileInputStream.<init>(FileInputStream.java:78)
	at anywheresoftware.b4a.objects.streams.File.OpenInput(File.java:199)
	at anywheresoftware.b4a.objects.streams.File.Copy(File.java:335)
	at anywheresoftware.b4a.objects.streams.File.getUnpackedVirtualAssetFile(File.java:346)
	at anywheresoftware.b4a.keywords.constants.TypefaceWrapper.LoadFromAssets(TypefaceWrapper.java:47)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
	at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:339)
	at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:139)
	at anywheresoftware.b4a.debug.Debug.delegate(Debug.java:259)
	at b4a.example.msgviewer._addmsg(msgviewer.java:95)
	at b4a.example.actshow._activity_create(actshow.java:401)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
	at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:342)
	at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:139)
	at b4a.example.actshow.afterFirstLayout(actshow.java:102)
	at b4a.example.actshow.access$000(actshow.java:17)
	at b4a.example.actshow$WaitForLayout.run(actshow.java:80)
	at android.os.Handler.handleCallback(Handler.java:733)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:136)
	at android.app.ActivityThread.main(ActivityThread.java:5019)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
	at dalvik.system.NativeStart.main(Native Method)
Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
	at libcore.io.Posix.open(Native Method)
	at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
	at libcore.io.IoBridge.open(IoBridge.java:393)
	... 36 more

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اسم  فونت رو ببین

virtual_assets/.ttf

خالیه

یا در دیتابیس

یا در هنگام گرفتن اطلاعات از دیتابیس مشکلی هست

اگر دیتابیس رو تغیر دادی بدونکه باید در گوشی که تست می کنی یبار دیتا برنامه رو کامل پاک کنی تا دیتابیس جدید جایگزین بشه

مشکل هرچه هست از همین جاها باید باشه

«موفق باشید.»

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ساب load رو که در بالا نوشته بودم.

انگار اصلا امتحان نکردی

Load
Dim matn As Label:matn.Initialize(""):matn.TextColor=Colors.DarkGray
matn.Text=content
matn.TextSize = actSettings3.fontsize
matn.Typeface = Typeface.LoadFromAssets(actSettings3.font &".ttf")
'''ساب لود
Sub Load
	Dim cur As Cursor
	cur =  sql.ExecQuery ("SELECT * FROM setting")
	cur.Position=0
	actSettings3.fontsize = cur.getString("fontsize")
	actSettings3.font = cur.getString("font")
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...