android中的TabHost 我正在尝试将Tab主机升级到Android 我得到了错误,因为我已经张贴在logcat 关于如何克服这个问题有什么想法吗 JSON响应和其他功能在工作时非常好 好吧,没有塔布斯汀,但我已经威胁到了下面的塔布斯汀 有错误
AndroidTabAndListView.javaandroid中的TabHost 我正在尝试将Tab主机升级到Android 我得到了错误,因为我已经张贴在logcat 关于如何克服这个问题有什么想法吗 JSON响应和其他功能在工作时非常好 好吧,没有塔布斯汀,但我已经威胁到了下面的塔布斯汀 有错误,android,android-listview,android-tabhost,Android,Android Listview,Android Tabhost,AndroidTabAndListView.java public class AndroidTabAndListView extends TabActivity { // TabSpec Names private static final String INBOX_SPEC = "Inbox"; private static final String OUTBOX_SPEC = "Outbox"; private static fin
public class AndroidTabAndListView extends TabActivity {
// TabSpec Names
private static final String INBOX_SPEC = "Inbox";
private static final String OUTBOX_SPEC = "Outbox";
private static final String PROFILE_SPEC = "Profile";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
// Inbox Tab
TabSpec inboxSpec = tabHost.newTabSpec(INBOX_SPEC);
Intent inboxIntent = new Intent(this, MainActivity.class);
// Tab Content
inboxSpec.setContent(inboxIntent);
// Outbox Tab
TabSpec PriceSpec = tabHost.newTabSpec(OUTBOX_SPEC);
Intent PriceIntent = new Intent(this, PriceDescriptionActivity.class);
PriceSpec.setContent(PriceIntent);
// Profile Tab
TabSpec DistanceSpec = tabHost.newTabSpec(PROFILE_SPEC);
Intent DistanceIntent = new Intent(this, DistanceDiscriptionActivity.class);
DistanceSpec.setContent(DistanceIntent);
// Adding all TabSpec to TabHost
tabHost.addTab(inboxSpec);
tabHost.addTab(PriceSpec);
tabHost.addTab(DistanceSpec);
}
}
public class MainActivity extends Activity {
// url to make request
private static String url = "http://54.218.73.244:7004/";
TextView timedisplay;
String item;
private HashMap<Integer, String> TimeMap = new HashMap<Integer, String>();
ListView yourListView;
List<Item> yourData = new ArrayList<Item>();
MyAdapter customAdapter;
ProgressDialog progressDialog;
String restaurant_name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timedisplay = (TextView) findViewById(R.id.RestaurantTimeID);
yourListView = (ListView) findViewById(R.id.listViewID);
// Instantiating ProgressDialog with onCreate method
progressDialog = new ProgressDialog(MainActivity.this);
new ParsingAsync().execute();
}
private class ParsingAsync extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(MainActivity.this, "",
"Please Wait", true, false);
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
String _response = null;
String _response1 = null;
try {
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(
CoreProtocolPNames.PROTOCOL_VERSION,
HttpVersion.HTTP_1_1);
HttpGet request = new HttpGet(url);
HttpResponse response = httpclient.execute(request);
HttpEntity resEntity = response.getEntity();
_response = EntityUtils.toString(resEntity);
JSONObject jsonObject = new JSONObject(_response);
JSONArray first_array = jsonObject.getJSONArray("restaurants");
JSONArray second_array = jsonObject
.getJSONArray("RestaurantTimings");
for (int i = 0; i < first_array.length(); i++) {
JSONObject c = second_array.getJSONObject(i);
Item item = new Item();
// Storing each json item in variable
int id = c.getInt("_id");
String TIME = c.getString("RestaurantTime");
item.setTime(TIME);
c = first_array.getJSONObject(i);
String NAME = c.getString("restaurantNAME");
item.setName(NAME);
yourData.add(item);
}
HttpClient httpclient1 = new DefaultHttpClient();
httpclient.getParams().setParameter(
CoreProtocolPNames.PROTOCOL_VERSION,
HttpVersion.HTTP_1_1);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
progressDialog.dismiss();
customAdapter = new MyAdapter(MainActivity.this,
R.layout.itemlistrow, yourData);
yourListView.setAdapter(customAdapter);
yourListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
item = yourData.get(position).getName();
// String sendingurl="url1?param1=value1";
Intent i = new Intent(MainActivity.this,
RestaurantDesc.class);
i.putExtra("REST", item.toString());
// i.putExtra("key", yourData.get(position).getUrl());
//i.putExtra("CC_RES", item.toString());
startActivity(i);
}
});
}
}
}
MainActivity.java
public class AndroidTabAndListView extends TabActivity {
// TabSpec Names
private static final String INBOX_SPEC = "Inbox";
private static final String OUTBOX_SPEC = "Outbox";
private static final String PROFILE_SPEC = "Profile";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
// Inbox Tab
TabSpec inboxSpec = tabHost.newTabSpec(INBOX_SPEC);
Intent inboxIntent = new Intent(this, MainActivity.class);
// Tab Content
inboxSpec.setContent(inboxIntent);
// Outbox Tab
TabSpec PriceSpec = tabHost.newTabSpec(OUTBOX_SPEC);
Intent PriceIntent = new Intent(this, PriceDescriptionActivity.class);
PriceSpec.setContent(PriceIntent);
// Profile Tab
TabSpec DistanceSpec = tabHost.newTabSpec(PROFILE_SPEC);
Intent DistanceIntent = new Intent(this, DistanceDiscriptionActivity.class);
DistanceSpec.setContent(DistanceIntent);
// Adding all TabSpec to TabHost
tabHost.addTab(inboxSpec);
tabHost.addTab(PriceSpec);
tabHost.addTab(DistanceSpec);
}
}
public class MainActivity extends Activity {
// url to make request
private static String url = "http://54.218.73.244:7004/";
TextView timedisplay;
String item;
private HashMap<Integer, String> TimeMap = new HashMap<Integer, String>();
ListView yourListView;
List<Item> yourData = new ArrayList<Item>();
MyAdapter customAdapter;
ProgressDialog progressDialog;
String restaurant_name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timedisplay = (TextView) findViewById(R.id.RestaurantTimeID);
yourListView = (ListView) findViewById(R.id.listViewID);
// Instantiating ProgressDialog with onCreate method
progressDialog = new ProgressDialog(MainActivity.this);
new ParsingAsync().execute();
}
private class ParsingAsync extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(MainActivity.this, "",
"Please Wait", true, false);
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
String _response = null;
String _response1 = null;
try {
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(
CoreProtocolPNames.PROTOCOL_VERSION,
HttpVersion.HTTP_1_1);
HttpGet request = new HttpGet(url);
HttpResponse response = httpclient.execute(request);
HttpEntity resEntity = response.getEntity();
_response = EntityUtils.toString(resEntity);
JSONObject jsonObject = new JSONObject(_response);
JSONArray first_array = jsonObject.getJSONArray("restaurants");
JSONArray second_array = jsonObject
.getJSONArray("RestaurantTimings");
for (int i = 0; i < first_array.length(); i++) {
JSONObject c = second_array.getJSONObject(i);
Item item = new Item();
// Storing each json item in variable
int id = c.getInt("_id");
String TIME = c.getString("RestaurantTime");
item.setTime(TIME);
c = first_array.getJSONObject(i);
String NAME = c.getString("restaurantNAME");
item.setName(NAME);
yourData.add(item);
}
HttpClient httpclient1 = new DefaultHttpClient();
httpclient.getParams().setParameter(
CoreProtocolPNames.PROTOCOL_VERSION,
HttpVersion.HTTP_1_1);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
progressDialog.dismiss();
customAdapter = new MyAdapter(MainActivity.this,
R.layout.itemlistrow, yourData);
yourListView.setAdapter(customAdapter);
yourListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
item = yourData.get(position).getName();
// String sendingurl="url1?param1=value1";
Intent i = new Intent(MainActivity.this,
RestaurantDesc.class);
i.putExtra("REST", item.toString());
// i.putExtra("key", yourData.get(position).getUrl());
//i.putExtra("CC_RES", item.toString());
startActivity(i);
}
});
}
}
}
从错误中,它说“您必须指定一种方法来创建选项卡指示器”。。。。但是如何解决它您需要设置
指示符
如inboxSpec.setIndicator(收件箱_规范)每个选项卡的代码>如下所示:
TabHost TabHost=getTabHost();
//收件箱选项卡
TabSpec inboxSpec=tabHost.newTabSpec(收件箱规格);
Intent inboxIntent=新的Intent(此,MainActivity.class);
收件箱规格设置指示器(收件箱规格) 该指示器告诉tabspec要显示的内容
例如,您可以将布局充气到其中
DistanceSpec.setIndicator(inflater.inflate(layout.distance_tab, null));
并让distance_tab.xml具有类似于
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right|center_vertical"
android:background="#00ffffff">
<LinearLayout
android:orientation="vertical"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_weight="1"
android:id="@+id/layout_distance_tab"
android:background="@drawable/tab_drawable"
android:layout_height="60dip">
<ImageView
android:id="@+id/image_tab_icon"
android:layout_marginTop="5dip"
android:layout_marginBottom="1dip"
android:layout_height="30dip"
android:layout_width="45dip"
android:background="@drawable/tab_distance_drawable"></ImageView>
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="10.5dip"
android:textColor="@drawable/text_tab_indicator"
android:text="Distance"
android:layout_marginTop="2dip"></TextView>
</LinearLayout>
</LinearLayout>
@GrlsHu。。。。。完美的你的解决方案有效。。。。。就我所知,我想问。。。。为什么我们需要设定指标。。。。它是复合的吗?指示符分别定义每个选项卡。因此,有必要提供每个选项卡指示器,以便在选择选项卡时,每个选项卡将从其他选项卡中单独识别。很高兴帮助您……:)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right|center_vertical"
android:background="#00ffffff">
<LinearLayout
android:orientation="vertical"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_weight="1"
android:id="@+id/layout_distance_tab"
android:background="@drawable/tab_drawable"
android:layout_height="60dip">
<ImageView
android:id="@+id/image_tab_icon"
android:layout_marginTop="5dip"
android:layout_marginBottom="1dip"
android:layout_height="30dip"
android:layout_width="45dip"
android:background="@drawable/tab_distance_drawable"></ImageView>
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="10.5dip"
android:textColor="@drawable/text_tab_indicator"
android:text="Distance"
android:layout_marginTop="2dip"></TextView>
</LinearLayout>
</LinearLayout>