2016-02-21 6 views
0

Im сражается с этим некоторое время и до сих пор не знает, как заставить его работать. Так у меня есть класс плеер с конструкторомКак использовать объект в нескольких классах?

Player(String playerName, double playerCash) 
{ 
    this.playerName = playerName; 
    this.playerCash = playerCash; 
} 

В MainActivity я создать объект-плеер

Player player = new Player("player", 100); 

И теперь в TextView в SecondActivity я хотел бы использовать

playerCash = (TextView) findViewById(R.id.playerCash); 
    playerCash.setText(player.getPlayerCash()); 

Может кто-нибудь объяснить мне, как я могу заставить его работать? Я получаю не могу разрешить проигрыватель символов. Заранее спасибо

+0

Возможный дубликат [Что является лучшим способом обмена данными между действиями?] (Http://stackoverflow.com/questions/4878159/whats-the-best-way-to-share-data-between-activities) –

ответ

0

Я не уверен, что то, что вы опубликовали, является вашим целым классом, или если вы устранили его часть. Я напишу этот ответ, предполагая, что это ваш весь класс.

Итак, вот сделка: вам нужно создать методы в своем классе, чтобы вы могли получать и устанавливать данные в/из него.

public class Player() implements Parcelable { 

    private String playerName; 
    private String playerCash; 

    public Player(String playerName, String playerCash) { 
     this.playerName = playerName; 
     this.playerCash = playerCash; 
    } 

    public String getPlayerName() { 
     return playerName; 
    } 

    public void setPlayerName(String playerName) { 
     this.playerName = playerName; 
    } 

    public String getPlayerCash() { 
     return playerCash; 
    } 

    public void setPlayerCash(String playerCash) { 
     this.playerCash = playerCash; 
    } 

    public Player(Parcel in) { 
     String[] data = new String[2]; 
     in.readStringArray(data); 
     this.playerData = data[0]; 
     this.playerCash = data[1]; 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeStringArray(new String[] {this.playerName, 
              this.playerCash}); 
    } 

    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 
     public Player createFromParcel(Parcel in) { 
      return new Player(in); 
     } 

     public Player[] newArray(int size) { 
      return new Player[size]; 
     } 
    }; 
} 

редактировать

Я не читал ту часть, где вы говорите, вы хотите поделиться между деятельностью. Я только заметил это, потому что кто-то упомянул о внедрении Parcelable, что действительно помогает вашей проблеме.

В любом случае, я отредактировал свой код для его реализации.

Для обмена данными между различными видами деятельности вы будете также нуждаться намерение, и вы можете поделиться данные, хранящиеся на вашем классе игрока:

Intent i = new Intent(); 
i.putExtra("player", new Player("Jhon", "Over 9000!"); 

И в вашей 2-ой деятельности, чтобы получить его вы могли бы сделать:

Bundle b = getIntent().getExtras(); 
Player player = b.getParcelable("player"); 

Надеюсь, что это поможет.

0

Вы можете реализовать интерфейс Parcelable для класса Player, а затем передать его экземпляр из MainActivity через Intent в SecondActivity.