Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Rick45

Android receber valor das settings da app

Mensagens Recomendadas

Rick45

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rick45

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 :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis
Rick45

já estou maluco com isto :P ... 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 :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

E´stas certo de que o testea retorna valor ?

Faz um teste. Coloca isto depois de setares para o valor da caixa de texto:

Toast.makeText(this, "TESTE ::: " + testea, Toast.LENGTH_SHORT).show();


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

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rick45

finalmente ja consegui por isto a dar :P , arranjei um livro sobre android ela tinha explicado passo a passo e vi que me faltava algumas coisas nao na class onde queria ler os valores mas sim na class settings, obligado pela ajuda,

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rick45

era bom de mais para ser verdade :P

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rick45

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??

Editado por Rick45

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.