2011-11-16 61 views
3

FragmentAndroid片段與內部活動

我剛開始使用HoneyComb的片段設計。我創建了兩個片段。當我點擊按鈕'santhosh'(在圖片的左側),一個按鈕被創建在另一個片段(圖片的右側)。接下來,我想爲下一個按鈕創建偵聽器,以便在同一個片段中創建下一個活動(即右側片段內的新活動)。我的代碼如下。 main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 
<fragment class="com.fragment.example.Titles" 
android:id="@+id/titles" android:layout_weight="1" 
android:layout_width="0px" 
android:layout_height="match_parent" /> 
<FrameLayout android:id="@+id/details" android:layout_weight="1" 
     android:layout_width="0px" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

FragmentExample.java

public class FragmentExample extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


} 
} 

Titles.java

public class Titles extends Fragment { 
public FragmentTransaction ft; 
@Override 
public View onCreateView(LayoutInflater inflater, 
     ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.main1, null); 
    Button button1 = (Button)v.findViewById(R.id.button1); 
    button1.setText("santhosh"); 
    button1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      DetailsFragment details = (DetailsFragment) 
         getFragmentManager().findFragmentById(R.id.details); 
       if (details == null || details.getShownIndex() != 1) { 
        // Make new fragment to show this selection. 
        details = DetailsFragment.newInstance(1); 

        // Execute a transaction, replacing any existing 
        // fragment with this one inside the frame. 
        ft 
          = getFragmentManager().beginTransaction(); 
        ft.add(R.id.details, details, "detail"); 
        ft.setTransition(
          FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
        ft.commit(); 
       } 
     } 

    }); 
    return v; 

} 
} 

DetailsFragment.java

public class DetailsFragment extends Fragment { 
/** 
* Create a new instance of DetailsFragment, initialized to 
* show the text at 'index'. 
*/ 
Titles title = new Titles(); 
String[] titles = {"Title1", "Title2", "Title3", "Title4"}; 
public static DetailsFragment newInstance(int index) { 
    DetailsFragment f = new DetailsFragment(); 

    // Supply index input as an argument. 
    Bundle args = new Bundle(); 
    args.putInt("index", index); 
    f.setArguments(args); 

    return f; 
} 

public int getShownIndex() { 
    return getArguments().getInt("index", 0); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, 
     ViewGroup container, Bundle savedInstanceState) { 
    if (container == null) { 
     // Currently in a layout without a container, so no 
     // reason to create our view. 
     return null; 
    } 
    Button button = new Button(getActivity()); 
    button.setText("Next"); 
    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

     } 

    }); 
    return button; 
} 
} 

從DetailsFragment.java我想顯示一個新的活動與該片段。

回答

6

接下來我想讓下一個按鈕的偵聽器,以便下一個活動創建在同一個片段(即在右側片段內的新活動)。

這不支持,抱歉。嵌套活動已被棄用。

+0

我想用另一個片段替換DetailsFragment。我應該通過點擊一個按鈕來做到這一點。? –

+0

@Santhosh_pulliman:歡迎您使用任何你喜歡的觸發器。但是,您必須替換一個片段,而不是將一個活動或片段放入片段中。 – CommonsWare

+0

謝謝......這也是我發現的 –