데이터 저장 & Fragment UNIT 28 로봇 SW 콘텐츠 교육원 조용수
데이터 저장 & Fragment SharedPreference 로 데이터 저장 Fragment 의 이해 2
SharedPreference App 에서 간단하게 데이터를 저장하기 위한 기능 해당 App 의 저장 공간에 File 로 저장 Key –Value 형태로 저장이 되며, App 을 삭제하기 전까지 유지됨 3
Preference 선언 4 public class MainActivity extends Activity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); … } public class MainActivity extends Activity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final SharedPreferences preferences = getSharedPreferences(“Name”, MODE_PRIVATE); … }
Preference Write 5 public class MainActivity extends Activity { private TextView textView; private Button protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); textView = (TextView)findViewById(R.id.text); button = (Button)findViewById(R.id.button); button.setOnClickListener(new OnClickListener() public void onClick(View v) { Editor editor = preferences.edit(); editor.clear(); editor.putString("data", "text"); editor.commit(); } }); }
Preference Read 6 public class MainActivity extends Activity { private TextView textView; private Button protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.text); button = (Button)findViewById(R.id.button); final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); String text = preferences.getString("data", null); textView.setText(text); … }
Fragment Activity 내에서 재 사용 가능한 모듈 대형화 된 화면을 분할하여 사용하기에 적합 7
Fragment Life Cycle onAttach(Activity) 프래그먼트가 액티비티 레이아 웃에 포함되는 순간. onCreateView(LayoutInflater, ViewGroup, Bundle) 프래그먼트의 UI 를 구성하는 뷰 (View) 를 반환합니다. UI 를 가지지 않는 프래그먼트일 경우 null 을 반환할 수도 있습니다. onDestroyView() 프래그먼트가 화면에서 사라진 후, 뷰의 현재 상태가 저장된 후 호출됩니다. 여기 에서 저장된 뷰의 상태는 액티비티와 유사하게 Bundle 형태로 저장되며, 저장된 뷰의 상태는 onCreate() 및 onCreateView() 에서 다시 불러들 일 수 있습니다 8
안드로이드 지원 패키지 안드로이드 3.0 이후에 추가된 API 호환성을 위해 서 만들어진 라이브러리 Android.support.v4 –Fragment –ViewPager –ActionBar 신규 OS 의 기능을 계속 추가 따라서 호환성을 위해서는 가능하면 사용하는것이 바람직함. 9
Fragment Class 10 import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class SecondFragment extends Fragment public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View v = inflater.inflate(R.layout.fragment_02, container, false); return v; }
Main Activity 11 import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends FragmentActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(savedInstanceState == null){ FirstFragment first = new FirstFragment(); getSupportFragmentManager().beginTransaction().add(R.id.container, first).commit(); }
Fragment 변경 public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()) { case R.id.button1: FirstFragment first = new FirstFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.container, first).commit(); break; case R.id.button2: SecondFragment second = new SecondFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.container, second).commit(); break; }
SmartRobot Interface 적용 13 public class MainActivity extends FragmentActivity implements SmartRobot.Callback, Device.DeviceDataChangedListener, OnClickListener protected void onStart() { super.onStart(); SmartRobot.activate(getApplicationContext(), this); protected void onStop() { super.onStop(); SmartRobot.deactivate(); } /** * public void onInitialized(Robot robot) { robot.addDeviceDataChangedListener(this); }
Fragment 변경 14 public class FirstFragment extends Fragment implements ControllerCallBack{ ControllerView controllerView; MainActivity public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View v = inflater.inflate(R.layout.fragment_01, container, false); controllerView = (ControllerView)v.findViewById(R.id.conroller); controllerView.setCallback(this); return v; public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); this.activity = (MainActivity)activity; public void ChangeControllerPosition(int xOffset, int yOffset) { // TODO Auto-generated method stub int rSpeed = 0; int fSpeed = 0; if(Math.abs(xOffset/10) > 10) { rSpeed = (int)(xOffset/10); } if(Math.abs(yOffset/10) > 10) { fSpeed = (int)(yOffset/10); } activity.leftWheel.write(fSpeed + rSpeed); activity.rightWheel.write(fSpeed - rSpeed); }