마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Fragment & actionbar 질문 입니다.

0 추천

public class FragmentTab2 extends Fragment {

	ArrayList<ContentsTemp> data;
	ArrayAdapter<ContentsTemp> adapter;
	GridView gridView;
	View v, dialogView;
	int txtId = 0;
	Button btnAdd, btnInit;
	Context con;

	@Override
	public void onDetach() {
		// TODO Auto-generated method stub
		super.onDetach();
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		getActivity();
		View v = inflater.inflate(R.layout.mycontents, container, false);
		con = v.getContext();

		data = new ArrayList<ContentsTemp>();

		FragmentTabs.sqlDB = FragmentTabs.myContentsHelper
				.getReadableDatabase();
		Cursor cursor;
		cursor = FragmentTabs.sqlDB.rawQuery(
				"SELECT * FROM mySecretData ORDER BY id DESC;", null);

		// 0 1 2 3
		// id title cont usid
		// Constructor - String title, String context, String id, String userId

		while (cursor.moveToNext()) {
			int id = cursor.getInt(0);
			String title = cursor.getString(1);
			String contents = cursor.getString(2);
			String userId = cursor.getString(3);
			data.add(new ContentsTemp(title, contents, id, userId));
		}

		// Comparator<Object> com = Collections.reverseOrder();
		// Collections.sort(data, com);

		cursor.close();
		FragmentTabs.sqlDB.close();

		Log.e("e", "1");

		adapter = new ArrayAdapter<ContentsTemp>(con, R.layout.entry,
				R.id.titleName, data) {

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				Log.e("e", "2");
				LayoutInflater li = (LayoutInflater) con
						.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
				View v = li.inflate(R.layout.entry, null);
				ContentsTemp temp = data.get(position);
				Log.e("e", "3");
				if (v != null) {
					TextView tvTitle = ((TextView) v
							.findViewById(R.id.titleName));
					TextView tvContents = ((TextView) v
							.findViewById(R.id.contentTxt));
					TextView tvUserId = ((TextView) v.findViewById(R.id.userId));
					TextView tvId = ((TextView) v.findViewById(R.id.numberId));

					tvTitle.setText(temp.getTitle());
					tvContents.setText(temp.getContext());
					tvUserId.setText(temp.getUserId());
					tvId.setText(Integer.toString(temp.getId()));

				}
				return v;
			}

		};

		btnAdd = (Button) v.findViewById(R.id.btnAdd);

		btnAdd.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				dialogView = (View) View.inflate(getActivity(),
						R.layout.inputdialog, null);
				AlertDialog.Builder dlg = new AlertDialog.Builder(con);
				dlg.setTitle("INPUT SECRET");
				dlg.setView(dialogView);
				dlg.setPositiveButton("OK",
						new DialogInterface.OnClickListener() {

							@Override
							public void onClick(DialogInterface dialog,
									int which) {
								EditText temp1, temp2;
								String strTitle, strContents;
								boolean out = false;

								temp1 = (EditText) dialogView
										.findViewById(R.id.edtTitle);
								temp2 = (EditText) dialogView
										.findViewById(R.id.edtContents);
								strTitle = temp1.getText().toString();
								strContents = temp2.getText().toString();

								if (strTitle.length() == 0) {
									Toast.makeText(getActivity(),
											"InPut Title", Toast.LENGTH_LONG)
											.show();
									out = true;
								} else if (strContents.length() == 0) {
									Toast.makeText(getActivity(),
											"InPut Contents", Toast.LENGTH_LONG)
											.show();
									out = true;
								} else if (strTitle.length() != 0
										&& strContents.length() != 0) {
									data.add(new ContentsTemp(strTitle,
											strContents));
									out = true;

									FragmentTabs.sqlDB = FragmentTabs.myContentsHelper
											.getWritableDatabase();
									FragmentTabs.sqlDB
											.execSQL("INSERT INTO mySecretData VALUES (NULL,'"
													+ strTitle
													+ "', '"
													+ strContents
													+ "', 'abc') ;");
									
									Intent intent = new Intent(getActivity(),
											FragmentTabs.class);
									startActivity(intent);
									
									
									
									
								}
							}
						});
				dlg.setNegativeButton("Cancel", null);
				dlg.show();

			}
		});

		btnInit = (Button) v.findViewById(R.id.btnInit);
		btnInit.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				AlertDialog.Builder dlg = new AlertDialog.Builder(con);
				dlg.setTitle("Clear database? ");
				dlg.setMessage("REALLY DELETE?");
				dlg.setPositiveButton("OK",
						new DialogInterface.OnClickListener() {

							@Override
							public void onClick(DialogInterface dialog,
									int which) {
								FragmentTabs.sqlDB = FragmentTabs.myContentsHelper
										.getWritableDatabase();
								FragmentTabs.sqlDB
										.execSQL("DELETE FROM mySecretData");

								
								Intent intent = new Intent(getActivity(),
										FragmentTabs.class);
								startActivity(intent);
								
								
								
							}
						});
				dlg.setNegativeButton("Cancel", null);
				dlg.show();

			}
		});

		gridView = (GridView) v.findViewById(R.id.myContentsGridView);
		gridView.setAdapter(adapter);

		return v;
	}
}

 

기본이 액션바에서 선택된 탭을

액티비티에서 Fragment로 만들어진 부분을 만들도록 하였는데

Fragment 를 상속 받아서 사용하니까.

데이터가 데이터 베이스에서 업데이트 되거나 삭제될때 업데이트가 되지 않습니다.

제가 빠진 메서드를 나 다른 방법이 없는가 합니다.

지금은 인텐드를 이용하여 뷰를 다시 새로 가져오는 방법을 사용하고 있습니다.

Fragment 이용하여 onCreateView() 메서드를 이용하여 update 기능을 사용가능한지 궁금합니다.

김코치 (160 포인트) 님이 2014년 1월 3일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...