이름이 Tab1, Tab2 인 두 개의 탭이 있습니다.
class MainActivity는 TabActivity를 확장합니다.
MainActivity.java동일한 탭에서 새 활동을 시작하는 방법은 무엇입니까?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTabHost = getTabHost();
Intent intentTab;
intentTab = new Intent().setClass(this, Tab1Activity.class);
mTabHost.addTab(mTabHost.newTabSpec("tab_1").setIndicator("Tab1")
.setContent(intentTab));
intentTab = new Intent().setClass(this, Tab2Activity.class);
mTabHost.addTab(mTabHost.newTabSpec("tab_2").setIndicator("Tab2")
.setContent(intentTab));
mTabHost.setCurrentTab(0);
main.xml에
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="5dp" >
</FrameLayout>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="-4dp"
android:layout_weight="0" />
</LinearLayout>
Tab1Activity는 JSON 파싱 및리스트 뷰의 결과를 기재 ListActvity 연장된다. listview에서 항목을 클릭 할 때 Tab-1과 같은 탭 즉, 새로운 활동을 시작하고 싶습니다.
어떻게 할 수 있습니까 ??
Tab1Activity.java
public class Tab1Activity extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab1);
// Hashmap for ListView
ArrayList<HashMap<String, String>> myList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);
try {
// Getting Array of Root
root = json.getJSONArray(TAG_ROOT);
// looping through All root
for (int i = 0; i < root.length(); i++) {
JSONObject c = root.getJSONObject(i);
// Storing each json item in variable
String name = c.getString(TAG_NAME);
String town = c.getString(TAG_TOWN);
String totalRating = c.getString(TAG_TOTALRATING);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_NAME, "Name: " + name);
map.put(TAG_TOWN, "Town: " + town);
map.put(TAG_RATING, "Rating: " + totalRating);
// adding HashList to ArrayList
myList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(this, myList,
R.layout.list_item, new String[] { TAG_NAME, TAG_TOWN,
TAG_RATING }, new int[] { R.id.name, R.id.address,
R.id.rating });
setListAdapter(adapter);
// selecting single ListView item
ListView lv = getListView();
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//what code should i write to start new activity in this tab i.e Tab1
}
});
}
} 여기에 위의 코드에서
:
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//what code should i write to start new activity in this tab i.e Tab1
}
});
내가 즉, 탭 -이 탭에서 새로운 활동을 시작하려면이 ItemClickListener에 작성해야 어떤 코드 1 ???
tab1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:orientation="vertical" >
<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:choiceMode="singleChoice"
android:drawSelectorOnTop="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollbars="vertical" />
</LinearLayout>
list_item.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textColor="#43bd00"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/town"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#acacac" >
</TextView>
<TextView
android:id="@+id/rating"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#acacac" >
</TextView>
</LinearLayout>
고맙습니다!
난 정말 모르겠습니다. 그러나 Listview의 OnItemClick Listener에서'startActivity()'와 함께'Intent'를 사용하면 현재 탭과 동일한 탭에서 활동이 시작될 것이라고 생각합니다. Tab-1 자체입니다. 그리고 일단 작업이 끝나면 'finish()'하는 것을 잊지 마십시오. 죄송합니다. "확실하지 않습니다."하지만 답변을 얻을 때까지 시도해보십시오. 좋은 질문입니다. +1 – Exorcist
이 코드를 작성했습니다 : 'Intent testIntent = new Intent (view.getContext(), NextActivity.class); \t \t \t \t startActivity (testIntent); \t \t \t \t finish(); ' 새로운 활동이 시작되지만 문제는 탭이 사라지는가 ?? – captaindroid
그게 효과가 없으니. 새로운 활동을 TabActivity로 확장하고 당분간이 새로운 활동에 그 탭들을 다시 포함 시키십시오. 나는 재미있는 일이 있기 때문에 이것을 시도 할 것이고, 내가 성공하면 알려 줄 것이다. \ m/ – Exorcist