Java 如何通过在android中创建类的实例来执行onCreate方法
我有MainActivity.java和SongLoad.java。Java 如何通过在android中创建类的实例来执行onCreate方法,java,android,Java,Android,我有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,p
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");
}
});
}
公共类歌曲加载扩展ListActivity{
公共指数=0;
公共字符串selectedSongPath;
公共字符串callerClass;
最终字符串MEDIA_PATH=新字符串(Environment.getExternalStorageDirectory().getPath());
public ArrayList songsList=new ArrayList();
ArrayList songsListData=新的ArrayList();
歌曲加载(字符串调用类){
this.callerClass=callerClass;
}
歌曲负载(){
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
如果(callerClass==“双模式”)
{
setContentView(R.layout.playlist);
}
}
公共数据生成器(){
mediaScanner();
对于(int i=0;i
现在我的问题是,当我创建一个SongLoad.java对象并调用playligenerator onCreate方法时,会调用它。但是我希望它执行。我该怎么做
如何通过在android中创建类的实例来执行onCreate方法
你没有
当我创建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");
}
});
}
删除此代码。Android会创建活动实例;您不会。此外:
- 删除
空构造函数SongLoad
- 将对
的调用从playligenerator()
移动到MainActivity
SongLoad的
方法onCreate()
- 从
main活动的
onLoad()方法调用
启动startActivity()
活动SongLoad
<>你也应该考虑阅读.< /P>在<代码>活动< /代码>上做你的作业,以及如何管理和启动。我读你的“问题”。10次,每次我都不太理解。你想做什么?我同意古纳的观点。我认为你不理解
活动课程。除非我不理解你的问题,我同意博弗雷多的观点。