我知道ActivityGroup在过去,但我想学习如何使用它。因此,我编写了一个简单的TabHost,并希望使用ActivityGroup显示不同的活动。以下是代码的部分
Player.java
package player.org;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;
public class Player extends TabActivity {
/** Called when the activity is first created. */
private MediaPlayer media=null;
private SeekBar progress;
private View play;
private Progress p;
TabHost tabhost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabs);
Resources res=getResources();
//TabHost tabhost=(TabHost) findViewById(R.id.tabhost);
// tabhost.setup();
tabhost=getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent=new Intent(this,Progress.class);
spec=tabhost.newTabSpec("now playing").setIndicator("Now playing", res.getDrawable(R.drawable.icon))
.setContent(intent);
tabhost.addTab(spec);
intent=new Intent(this,Group.class);
spec=tabhost.newTabSpec("all_songs").setIndicator("All songs", res.getDrawable(R.drawable.songs))
.setContent(intent);
tabhost.addTab(spec);
//intent=new Intent(this,Progress.class);
spec=tabhost.newTabSpec("artists").setIndicator("Artists", res.getDrawable(R.drawable.icon))
.setContent(intent);
tabhost.addTab(spec);
spec=tabhost.newTabSpec("alboom").setIndicator("Alboom", res.getDrawable(R.drawable.icon))
.setContent(intent);
tabhost.addTab(spec);
tabhost.setCurrentTab(0);
}
}Group.java
import android.os.Bundle;
import android.view.View;
public class Group extends ActivityGroup
{
@Override
public void onCreate(Bundle savedInstanceStated)
{
super.onCreate(savedInstanceStated);
View view = getLocalActivityManager().startActivity("AllSongs",
new Intent(this, AllSongs.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
setContentView(view);
}AllSongs.java
package player.org;
import java.util.ArrayList;
import android.R.id;
import android.app.ActivityGroup;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TabHost;
public class AllSongs extends ListActivity{
ArrayList<String> listItem=new ArrayList<String>();
ArrayAdapter<String> adapter;
ListView listView;
//Player p;
TabHost tab;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//p=new Player();
adapter=new ArrayAdapter<String>(this,R.layout.list_item,listItem);
setListAdapter(adapter);
listView=getListView();
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(listener);
addItem("vahag");
addItem("vahagvahag");
}
private OnItemClickListener listener=new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Intent intent = new Intent(AllSongs.this,Progress.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Group group= (Group) getParent();
View view=group.getLocalActivityManager().startActivity("Progress",intent).getDecorView();
setContentView(view);
}
};
public void addItem(String s)
{
listItem.add(s);
adapter.notifyDataSetChanged();
}
}和Progress.java
package player.org;
import android.app.Activity;
import android.app.ActivityGroup;
import android.app.Dialog;
import android.app.TabActivity;
import android.content.Context;
public class Progress extends Activity {
// Called when the activity is first created.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}因此,AllSongs.java试图用进度活动更改当前活动,但是当我按下列表项时,程序已关闭,logChat说
"08-17 12:49:26.471: ERROR/AndroidRuntime(1500):java.lang.RuntimeException:您的内容必须具有id属性为‘android.R.id.list’的ListView“
我想不出怎么解决这个问题,有人能帮忙吗?
发布于 2012-06-12 16:37:36
问题似乎是您使用的是ListActivity,但没有按照ListActivity希望它出现的方式定义您的ListView。
来自ListActivity的文档(重点为我):
ListActivity有一个默认的布局,该布局由屏幕中央的一个全屏列表组成。但是,如果您愿意,可以通过在setContentView()中使用onCreate()设置自己的视图布局来自定义屏幕布局。为此,您自己的视图必须包含一个id "@android:id/list"的ListView对象。
https://stackoverflow.com/questions/7098103
复制相似问题