제일 먼저 뜰 화면(Activitiy)에는 버튼 하나가 있습니다.
이 버튼을 누르면 EditText위젯이랑 버튼이 있는 Activitity가 호출됩니다.
이곳에서 글을 쓰고, 이 화면의 버튼을 누르면
다시 맨 처음 화면으로 돌아와 TextView에 내용이 반영되는..
그런 기본적인 코드를 짜봤는데요..ㅠ
제 짱구로는 어디서 엉킨 건지 더 이상 이해가 되지 않네요..ㅠㅠㅠ
조언 주시면 감사하겠습니다아아아아..ㅠㅠ
<BoardActivity.java>
package com.example.memo_ver1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class BoardActivity extends Activity {
private static final int WRITING_A=0;
private static TextView memoText=null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.board);
memoText = (TextView)findViewById(R.id.viewWriting);
Button getButton = (Button) findViewById(R.id.getBtn);
getButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg) {
Intent intent = new Intent(getBaseContext(), writingActivity.class); //액티비티를 띄우기 위한 인텐트 객체 생성 후 액티비티 띄우기
startActivityForResult(intent, WRITING_A); //다른 액티비티를 띄우기 위한 요청 코드 정의
}
});
}
//띄웠떤 액티비티가 응답을 보내오면 그 응답을 처리하는 역할
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
switch(requestCode){
case WRITING_A:
if(resultCode==RESULT_OK){
String memo = intent.getExtras().getString("writement");
memoText.setText(memo); //여기의 내용이 반영이 되지 않습니다.
memoText.setText("왜 안되는데"); //이건 나옵니다...
}
break;
}
}
}
그리고
<writingActivity.java>
package com.example.memo_ver1;
import com.example.memo_ver1.R;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class writingActivity extends Activity {
Bundle extra;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.writing);
//내부 익명 클래스에서 사용하기 위해 final 선언
final EditText edit = (EditText) findViewById(R.id.writingboard);
Button sendbtn = (Button) findViewById(R.id.sendbtn);
sendbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg) {
Intent intent = new Intent();
// extra = new Bundle();
//extra.putString("writement", edit.getText().toString()); //(Extra데이터의 이름, String(int,boolean) Value
// intent.putExtras(extra);
intent.putExtra("writement", edit.getText().toString());
setResult(RESULT_OK, intent); //현재 액티비티를 띄운 액티비티로 응답을 보낼 때 사용되며 결과코드와 인텐트객체를 파라미터로 전달
//보니까 요청코드는 절대 같으면 안되는데, 결과코드는 응답코드이므로 같은 값(->RESULT_OK)로 넘기면 되는 거 같다.
finish();
}
});
}
}
입니다.... 인터넷이랑 책이랑 찾아보면서 하고 있는데...
큰 개념들이 아직 잘 세워지지 않은 상태라
짜맞추다시피 했더니.. 혼동만 오네요 ㅠㅠ 도와주세요오..
그리고 질문부분만 말고도 이상한 부분 있으면 알려주시면 감사하겠습니다!!!
저기.. intent에서 전달되는 값이 (memo)가.. 없는거겠죠??
저도 비슷한 문제가 있긴 있었는데..
죄송염 사실 소스를 자세히 보진 않았습니다만..
몇가지 디버깅 해볼수 있는것들이 좀 있네요..
1. getBaseContext를 getApplicationContext으로 변경
2. 이건 좀 다른 문제이긴 합니다만..
혹시나... activity를 생성할때 메니페스트에 정의를 하게 되는데.. 이때 singleTask속성이 부여 됐는지..
이 내용 같은경우는.. 동일한 테스크가 아니면 intent가 전달되지 못한다는.. 그런 말들이 있습니다.
근데.. 저도 아직 이해를 못한 부분이라.. 구글 검색하시면.. 조금은 나올꺼에요. ~
정 안되면.. 음.. SharedPreference를 이용해서 값 저장하고 사용하는 방식도 있습니다.
개발 안하다가 갑자기 보려고 하니.. 헷갈리네요. ㅋ.