Jump to content

Recommended Posts

Posted

Boas ao pessoal do forum, preciso de um little help aqui já que ando aqui as voltas e não estou a conseguir, tenho um menu de opcoes e num "onMenuItemClick" tenho uma opcao de Edit para poder editar informacao, qual a melhor maneira de passar a informação para um novo quadro?

Obg pela ajuda!

Posted

@Alexandru obrigado pela dica, já a estava a explora-la, mas tenho uma duvida o intent+bundle so aponta para uma activity, certo? (pelo menos é o que eu ententdo) mas eu tenho varias activitys e queria que todas tivesse acesso à info... com a tua dica consigo ter?

Posted

Boas,

Quanto à questão "intent+bundle so aponta para uma activity, certo?"

Sim usas o bundle para passar a informação no intent, que por sua vez chama a activity.

Quanto à outra questão.

Se queres partilhar a informação por várias activities:

Se a informação está sempre na mesma activity e esta é que gere qual a actividade a chamar, ai podes usar o bundle.

Se a informação nem sempre parte da mesma activity, ou seja, o pedido para passar a informação pode partir de várias activities, ai podes usar uma opção no android que é sharedpreferences (http://developer.android.com/guide/topics/data/data-storage.html#pref) ou então, podes sempre criar a tua própria instancia de application e usares ela para partilhar essa informação por várias activities (http://stackoverflow.com/questions/4208886/using-the-android-application-class-to-persist-data).

Já agora segue também um link a explicar a classe Application http://developer.android.com/reference/android/app/Application.html

David

Posted (edited)

Sendo a informação JSON até tens a vida muito facilitada. Do lado da primeira activity, quando for para fazer a passagem para a segunda activity:

JSONArray stuff; // aquilo que queres enviar para a nova activity
Intent i = new Intent();
Bundle b = new Bundle();
b.putString("identificador_de_item", stuff.toString()); // transforma o objecto JSON em String e enfia no bundle
i.putExtras(b);

//... inicialização e push

Do outro lado activity que recebe a informação:

public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   Bundle b = this.getIntent().getExtras();

   try {
       self.stuff = new JSONArray(b.getString("indentificador_de_item"));
   } catch (JSONException e) {
       // em caso de erro... não deve acontecer se fizeres o toString de um JSONObject/Array anteriormente
   }

   // ... restantes operações de inicialização
}

EDIT:

Podes colocar globalmente, sim, mas não é propriamente a melhor forma de fazeres as coisas. Podes fazer isto trabalhando ao nível de classes e não de instâncias (static):

class MyGlobalClass {
   private static JSONArray stuff;

   public static JSONArray getStuff() { return stuff; }
   public static void setStuff(JSONArray stuff) { self.stuff = stuff; }
}

stuff = MyGlobalClass.getStuff();
MyGlobalClass.setStuff(stuff);
Edited by KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

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
×
×
  • 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.