0

我有一个 MainActivity.java 和 SongLoad.java。的代码MainActivity.java

 public class MainActivity extends Activity {

public static final int LOADREQUEST = 100;
private String callerClass = "DoubleMode";

ImageButton loadPlaylist1,loadPlaylist2;
ImageButton play1,play2;


SongLoad songloader = new SongLoad(callerClass);
MusicPlayerService musicplayer = new MusicPlayerService();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.homescreen);
    loadPlaylist1 = (ImageButton)findViewById(R.id.load_button1);
    loadPlaylist2 = (ImageButton)findViewById(R.id.load_button2);
    play1 = (ImageButton)findViewById(R.id.play1);
    play2 = (ImageButton)findViewById(R.id.play2);
}

public void onLoad(View v) {
    int loadButtonPressed = v.getId();
    songloader.playListGenerator();
    musicplayer.songLoader(songloader.songIndex, loadButtonPressed);.. soon       

SongLoad.java

public class SongLoad extends ListActivity{
public int songIndex = 0;
public String selectedSongPath;
public String callerClass;
final String MEDIA_PATH = new String(Environment.getExternalStorageDirectory().getPath());
public ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
SongLoad(String callerClass) {
    this.callerClass = callerClass; 
}
SongLoad() {

}

@Override
public void onCreate(Bundle savedInstanceState)  {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    if(callerClass == "DoubleMode")
    {
        setContentView(R.layout.playlist);
    }
}

public void playListGenerator() {

    mediaScanner(); 
    for (int i = 0; i < songsList.size(); i++)  {
        // creating new HashMap
        HashMap<String, String> song = songsList.get(i);

        // adding HashList to ArrayList
        songsListData.add(song);
    }

    // Adding menuItems to ListView
    ListAdapter adapter = new SimpleAdapter(this, songsListData,
            R.layout.playlist_item, new String[] { "songTitle" }, new int[] {
                    R.id.songTitle });

    setListAdapter(adapter);

    // selecting single ListView item
    ListView lv = getListView();
    // listening to single listitem click
    lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
        // getting listitem index
        songIndex = position;
        selectedSongPath = songsList.get(songIndex).get("songPath");

    }
    });
}

现在我的问题是,当我创建 SongLoad.java 的对象并调用 playListGenerator 时,会调用 onCreate 方法。但是我希望它执行。我怎么做?

4

1 回答 1

1

我如何通过在android中创建一个类的实例来执行onCreate方法

你没有。

当我创建 SongLoad.java 的对象时

删除此代码。Android创建活动实例;没有。还:

  • 删除SongLoad空的构造函数

  • 将调用移至playListGenerator()fromMainActivityonCreate()方法SongLoad

  • 通过SongLoad调用方法启动一个活动startActivity()onLoad()MainActivity

每个活动都在相对隔离的情况下工作,就像 Web 应用程序的一个网页不会从同一个 Web 应用程序中的其他网页调用 JavaScript 函数一样。

您最终将需要其他更改,例如在执行 I/O 时正确使用后台线程,但这会让您开始。

您还应该考虑阅读有关活动的文档

于 2013-11-13T15:06:21.877 回答