0

変数「artist」のゲッターとセッターを含むクラスがあります。

クラス:

public void setArtist(String artist) {
    this.artist = artist;
}

public String getArtist() {
    return artist;
}

次のようなアクティビティからsetArtistに電話をかけたいと思います。

アクティビティ1:

Playlist.setArtist(someString)

しかし、eclipseは、setArtistをstaticに変更する必要があることを教えてくれます。セッターを使用する私の全体的なポイントは、静的な参照を持たないようにすることでした。私は何か間違ったことをしていますか、それともこれを達成する別の方法がありますか?

4

5 に答える 5

6

それはあなたがあなたのオブジェクトをいつどこで欲しいかによって完全に異なります。あなたはこのようなことをすることができます:

class Artist implements Serializable{
  public static final String EXTRA = "com.your.package.ARTIST_EXTRA";

  private String name;

  public void setName(String name) {
      this.name = name;
  }

  public String getName() {
      return name;
  }    
}

アクティビティ1:

public void onCreate(Bundle savedInstance){
    // ....
    Artist artist = new Artist();
    artist.setName("Rolf");        

    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra(Artist.EXTRA, artist);
    startActivity(intent);
}

アクティビティ2:

次に、2番目のアクティビティでアーティストへの参照があります。

public void onCreate(Bundle savedInstance){
   // ....
   Artist artist = (Artist) getIntent().getSerializableExtra(Artist.EXTRA);

   Log.d("YourApp", "I have the artist! "+ artist.getName());

} 

特定のオブジェクトをシリアル化できないため、シリアル化する内容に注意してください。

もう1つの方法は、Applicationを拡張し、そこに参照を保持するクラスを用意することです。そうすれば、任意のアクティビティコンテキストからそれを取得できます。

于 2012-06-06T11:51:57.590 に答える
3

他のアクティビティがメモリ内にあると想定することはできないため、それを行うのは間違った方法です。私はアンドロイドの活動のいくつかとそれらの使い方を読みました。

http://developer.android.com/guide/topics/fundamentals/activities.html

于 2012-06-06T11:47:00.560 に答える
1

オブジェクトを作成しPlaylistてから変数を設定してください。

Playlist mObjPlaylist= new Playlist();
mObjPlaylist.setArtist(someString);
于 2012-06-06T11:46:35.090 に答える
0

あなたが活動を扱っている方法は正しい方法ではありません。

両方のアクティビティで使用する共通データが必要な場合は、アクティビティに配置するのではなく、共通のクラスを使用して操作できます。また、アクティビティから別のアクティビティを起動するときにデータを渡したい場合は、インテントエクストラを介して渡すことができます。 。

    class PlayList{
            private static PlayList self=null;
           private string artist;
            public static PlayList getInstance(){
            if(self==null){
            self=new PlayList();
            } 
            return self;
            }
            public void setArtist(String artist) {
                this.artist = artist;
            }

            public String getArtist() {
                return artist;
            }
        }
于 2012-06-06T11:48:26.267 に答える
0

A.show()のようなメソッドにアクセスする場合は、show()メソッドを静的メソッドにする必要があります。coz静的メソッドでは、オブジェクトにアクセスできる必要はありません。1つの解決策は、これらのゲッターとセッターを静的メソッドとして作成し、現在アクセスしているときにアクセスすることです。別の解決策は、シングルトンパターンを使用することです。したがって、この場合、これらのメソッドを静的にする必要はありません。そのクラスのシングルトンオブジェクトを取得し、次のようにこれらのメソッドにアクセスする必要があります。

PlayList.getInstance().setArtist();
于 2012-06-06T11:50:21.370 に答える