2012-03-28 2 views
1

이름이 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> 

고맙습니다!

+0

난 정말 모르겠습니다. 그러나 Listview의 OnItemClick Listener에서'startActivity()'와 함께'Intent'를 사용하면 현재 탭과 동일한 탭에서 활동이 시작될 것이라고 생각합니다. Tab-1 자체입니다. 그리고 일단 작업이 끝나면 'finish()'하는 것을 잊지 마십시오. 죄송합니다. "확실하지 않습니다."하지만 답변을 얻을 때까지 시도해보십시오. 좋은 질문입니다. +1 – Exorcist

+0

이 코드를 작성했습니다 : 'Intent testIntent = new Intent (view.getContext(), NextActivity.class); \t \t \t \t startActivity (testIntent); \t \t \t \t finish(); ' 새로운 활동이 시작되지만 문제는 탭이 사라지는가 ?? – captaindroid

+0

그게 효과가 없으니. 새로운 활동을 TabActivity로 확장하고 당분간이 새로운 활동에 그 탭들을 다시 포함 시키십시오. 나는 재미있는 일이 있기 때문에 이것을 시도 할 것이고, 내가 성공하면 알려 줄 것이다. \ m/ – Exorcist

답변