다음 작업을 수행해야하는 앱을 만듭니다.
- 시작되었을 때 스플래시/정보 활동이 표시됩니다.
은 - 다음 활동에서 체크 박스와 같은 이름의 목록을 보여줍니다
- 응용 프로그램을 종료하고 다시 열 때, 이전에 추가 된 이름이 저장되고 표시되어야합니다 - 사용자는 글고 치기를 통해 & 추가 버튼을 (리스트가 동적으로 업데이트)
새로운 이름을 추가 할 수 있습니다 목록에.안드로이드, 앱을 다시 열 때 ArrayList 저장
public class StartActivity extends Activity implements OnClickListener {
Typeface face;
TextView tvStartIntrotext;
Button bStartStart;
ArrayList<String> names = new ArrayList<String>();
String NAMESFILE = "names_file";
FileOutputStream fos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.startactivity);
face = Typeface.createFromAsset(getAssets(), "andalemono.ttf");
bStartStart = (Button) findViewById(R.id.bStartStart);
bStartStart.setTypeface(face);
tvStartIntrotext = (TextView) findViewById(R.id.tvStartIntrotext);
tvStartIntrotext.setTypeface(face);
bStartStart.setOnClickListener(this);
try {
fos = openFileOutput(NAMESFILE, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
names.add("Name Name");
oos.writeObject(names);
oos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.startactivity, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent startIntent = new Intent(StartActivity.this, Choose.class);
startActivity(startIntent);
}
}
읽고 지금까지 내 다른 활동이 있습니다 표시하려면 :
내가 저장하고 제대로 내 정보를로드 할 수 있는지 만 확인 설정에 내 startingactivity에서의 ArrayList로 내 목록을 시도했습니다
public class Choose extends Activity implements OnClickListener {
String NAMESFILE = "names_file";
FileInputStream fis;
Button bChooseChoose, bChooseAdd;
Typeface face;
TextView tvChoosePick;
EditText etChooseAddnew;
LinearLayout llMain;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.slideinright, R.anim.slideoutleft);
setContentView(R.layout.choose);
face = Typeface.createFromAsset(getAssets(), "andalemono.ttf");
bChooseChoose = (Button) findViewById(R.id.bChooseChoose);
bChooseChoose.setTypeface(face);
bChooseChoose.setOnClickListener(this);
bChooseAdd = (Button) findViewById(R.id.bChooseAdd);
bChooseAdd.setTypeface(face);
bChooseAdd.setOnClickListener(this);
tvChoosePick = (TextView) findViewById(R.id.tvChoosePick);
tvChoosePick.setTypeface(face);
etChooseAddnew = (EditText) findViewById(R.id.etChooseAddnew);
etChooseAddnew.setTypeface(face);
etChooseAddnew.setBackgroundResource(R.color.white1);
etChooseAddnew.setHintTextColor(color.greytext);
llMain = (LinearLayout) findViewById(R.id.llMain);
try {
fis = openFileInput(NAMESFILE);
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList<Object> names = (ArrayList<Object>) ois.readObject();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
for (int i = 0; i < names.size(); i++) {
CheckBox cbb = new CheckBox(this);
cbb.setText(names.get(i));
cbb.setTypeface(face);
cbb.setTextSize(16);
llMain.addView(cbb);
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()){
case R.id.bChooseChoose:
break;
case R.id.bChooseAdd:
/*This button for adding new list name*/
break;
}
}
}
이 시점에서 나는 하나의 오류는 내 for-loop에서 "setText"입니다. 목록에 올바르게 표시되도록 열어 둔 파일로부터 정보를 얻는 방법을 아직 모릅니다. for 루프는 fileInput/Output이 사용되지 않을 때 작동합니다.
안드로이드 프로그래밍에 익숙하지 않기 때문에 제가 시도 할 수있는 어떤 지침이든지 도움이 될 것입니다. :)
Thx!
감사합니다! 후속 질문 : 내가 처음 변수를 선언 한 이후로 이름 변수에 문제가 있다고 생각합니다. 이것은 내가 다시 생각하는 "이름"을 만들도록 도왔다. 그러나, 두 번째 활동에서 "setText"오류가 남아 있습니다. 이는 출력/입력이 작동하는지 확인하는 나의 방법입니다.). 이것을 확인하는 쉬운 방법이 있습니까? – bakatuna
@bakatuna 정확히 어떤 오류가 발생합니까? –
TextView 유형의 setText (CharSequence) 메소드는 인수 (Object)에 적용 할 수 없습니다 - 메시지입니다. – bakatuna