Jump to content

Android receber valor das settings da app


Rick45
 Share

Recommended Posts

Boa noite pessoal, estou a tentar fazer uma aplicação para android e estou com o seguinte problema.

nas settings tenho la uma para colocar um valor int

<EditTextPreference
		android:title="Intervalo de Captura"
		android:key="intervtemp"
		android:dialogTitle="Segundos"
		android:inputType="numberDecimal"/>

depois queria na main activity ler esse valor e utiliza-lo

como fasso? ja vi varias opções mas não tou a conseguir por a dar :S

Link to comment
Share on other sites

O que fiz foi passar uma setting que recebas para uma variável, e pus essa numa caixa de texto (edittext):

Para que possas perceber melhor vou fazer um caso prático: Buscar o imei do telemóvel, colocá-lo numa variável e numa caixa de texto.

//Declara a variável
String imei = "";
//Vai buscar a settting, neste caso o IMEI
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
//põe a setting na variável
imei= telephonyManager.getDeviceId();
//põe a variável numa edittext
aTuaCaixaDeTexto.setText(imei);  //Caixa de texto

Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Link to comment
Share on other sites

o problema é que como disses-te no segundo topico, eu não sei é ir buscar o valor, como deste de exemplo o do emei:

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

é essa parte que nao sei, so que em vez de ir buscar a info ao tlm quero que va buscar as settings que criei para a minha app,

eu tenho assim:

SharedPreferences settings = getSharedPreferences(intervtemp, 0);
   int valor = settings.getint(intervtemp);

so que nao consigo por a funcionar, deve estar a faltar alguma coisa ou mal 😛

Link to comment
Share on other sites

já estou maluco com isto 😛 ... fiz um exemplo simples e nem isso consigo por a dar...

tenho 3 ficheiros:

mainactivity:


package com.example.testes;

import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity {

private TextView teste;


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

teste = (TextView) findViewById(R.id.teste);

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);





int testea = preferences.getInt("intervtemp", 1);

teste.setText(testea);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, 0, 0, "Settings");
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
startActivity(new Intent(this, setings.class));
return true;
}
return false;
}

}

o xml com o layout das settings:


<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

       <PreferenceCategory
               android:title="Opções">
       <EditTextPreference 
           android:title="Intervalo de Captura" 
           android:key="intervtemp" 
           android:dialogTitle="Segundos"
           android:defaultValue="12"
           android:inputType="numberDecimal"/>
       <EditTextPreference android:title="isto é um teste" android:dialogTitle="teste" android:key="teste"/>

       <CheckBoxPreference android:key="vibrar_key"
               android:title="vibrar"
               android:defaultValue="true" />


       </PreferenceCategory>
</PreferenceScreen>

e a class para chamar o menu de setings


package com.example.testes;


import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.PreferenceActivity;

public class setings extends PreferenceActivity {

public static final String PREFS_NAME = "setings";

EditTextPreference intervtemp;

public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       addPreferencesFromResource(R.xml.setings);
   }
}

onde está o meu erro??

com este exemplo o que quero e que no ecra aparece o valor que tenho armazenado nas setings.

alguem me sabe dizer o que falta ou tamal... é que ja tou cego com isto 😛

Link to comment
Share on other sites

era bom de mais para ser verdade 😛

arrumei um apareceu outro, eu tinha uma setting para um boleano e agora adicionei uma para um int.

a do boleano funciona 100% mas a mesma coisa para int nao me está a dar

tenho isto

na settings.java


/** apanhar o valor do intervalo de tempo */
public static int getintervalo(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getInt(
intervalo_de_tempo, 10);
}

/** apanhar o boleano das ajudas */
public static boolean getHints(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(hints, OPT_HINTS_DEF);
}

depois na main vou buscar assim:


if(Preferences.getHints(getBaseContext())){
testes.setText("funciona");}
else testes.setText("nao da");

caso faça o mesmo para a setting de inteiro

por exemplo

int valor = Preferences.getintervalo(getBaseContext());

a aplicaçao termina

Link to comment
Share on other sites

ja tou cego com isto... criei mais uma seting com imput de strig e funciona tudo certnho


/** apanhar o string de teste */
public static String getTeste(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getString("teste", "default");
}

a que tenho para ir buscar o valor numerico nao da -.-'

edit:

estive agora a testar mais umas coisas e poenso que o problema está nas settings. o campo que eu tenho para receber o intervalo de tempo


<EditTextPreference 
           android:title="Intervalo de Captura" 
           android:key="intervtemp" 
           android:dialogTitle="Segundos"
           android:defaultValue="12"
           android:inputType="numberDecimal"/>
       <EditTextPreference android:title="isto é um teste" android:dialogTitle="teste" android:key="teste"/>

isto é o EditTextPreference , isto retorna sempre uma string certo?? penso que é por caisa disso que esta a dar problemas... da para por a retornar um inteiro??

Edited by Rick45
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.