728x90
Fragment 내에 ListView를 사용할 경우 보다 편리하게 구성할 수 있도록 제공되는 Fragment
Listview의 id가 @android:id/list 로 설정되어 있을 경우 자동으로 ListView를 찾아 관리
ListFragment : ListView를 보다 쉽게 사용
(내 생각엔 한 화면에 짧게 리스트로 쓸 경우)
ListView : 대량의 정보를 List로 화면에 띄울 경우
1.
<fragment.xml>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list" //아이디 설정
/>
2.
<fragment.java>
public class SubFragment extends ListFragment {
TextView text1;
String[] list = {"항목1", "항목2","항목3"};
public SubFragment() {
// Required empty public constructor
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_sub, container, false);
text1 = view.findViewById(R.id.textView);
//리스트 뷰에 적용할 어댑터를 생성한다.
MainActivity activity = (MainActivity) getActivity();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, list);
//어댑터를 리스트 뷰에 적용
setListAdapter(adapter);
return view;
}
//리스트뷰의 항목을 터치하면 호출되는 함수
@Override
public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) {
super.onListItemClick(l, v, position, id);
text1.setText("선택한 항목: "+ list[position]);
}
}
3. 메인 레이아웃 아이디 설정
android:id="@+id/container"
4. <메인>
public class MainActivity extends AppCompatActivity {
SubFragment subF = new SubFragment();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction tran = manager.beginTransaction();
tran.replace(R.id.container, subF);
tran.commit();
}
}
DialogFragment
콘텐츠 위에 떠있는 오버레이 모달창
일반적으로 경고 대화 상자, 확인 대화 상자를 표시하거나 다른 활동으로 전환하지 않고 오버레이 내에서 정보를 요청하는 데 사용한다.
커스터 마이징 가능
public class SubDialogFragment extends DialogFragment {
public SubDialogFragment() {
// Required empty public constructor
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
MainActivity activity = (MainActivity)getActivity();
AlertDialog.Builder alBuilder = new AlertDialog.Builder(activity);
alBuilder.setTitle("타이틀");
alBuilder.setMessage("메시지");
alBuilder.setPositiveButton("positive",new DialogListener());
alBuilder.setNeutralButton("중립",new DialogListener());
alBuilder.setNegativeButton("negative",new DialogListener());
AlertDialog alert = alBuilder.create();
return alert;
}
class DialogListener implements DialogInterface.OnClickListener
{
@Override
public void onClick(DialogInterface dialog, int which) {
MainActivity activity = (MainActivity)getActivity();
switch (which)
{
case DialogInterface.BUTTON_POSITIVE :
activity.textView.setText("positive");
break;
case DialogInterface.BUTTON_NEUTRAL :
activity.textView.setText("neutral");
break;
case DialogInterface.BUTTON_NEGATIVE :
activity.textView.setText("negative");
break;
}
}
}
}
<메인>
// 다이얼로그로 띄울 프래그먼트의 객체를 생성
SubDialogFragment subdialf = new SubDialogFragment();
FragmentManager fmanger = getSupportFragmentManager();
//프래그먼트 다이얼로그를 띄운다.
subdialf.show(fmanger,"tag");
guides.codepath.com/android/using-dialogfragment
'Front-end > Android (안드로이드 앱 개발)' 카테고리의 다른 글
Android Studio , SQLite (0) | 2020.08.14 |
---|---|
Android Studio , 파일 저장 읽기, 내부 저장소 / 외부 저장소 (0) | 2020.08.11 |
Android Studio , Service & Intent Service & Forground Service (0) | 2020.08.05 |
Android Studio , 시스템 메시지 : BroadcastReceiver [문자 메시지 읽기] (0) | 2020.08.02 |
Android Studio , BroadCast Reciever 브로드캐스트 리시버 (0) | 2020.08.01 |
댓글