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

edittext의 값을 다른 액티비티로 어떻게 가져오나요?ㅠㅠ? (재질문)

0 추천
a액티비티에서 edittext 에 작성한 값을

b액티비티에 string 값으로 가지고 오고 싶은데 어떻게 해야 하나요?

(a액티비티에서 입력한 값 - --- > b액티비티로 가지고 오기.)







<MessageActivity 액티비티>

// 입력된 연락처 추출
EditText et_receiver = (EditText)findViewById(R.id.edit_receiver);
String str_receiver = et_receiver.getText().toString();

// 입력된 메세지 내용 추출
EditText et_message = (EditText)findViewById(R.id.edit_message);
String str_message = et_message.getText().toString();

Intent isms = new Intent(MessageActivity.this, AlarmShowActivity.class);
isms.putExtra("str_receiver", str_receiver);
isms.putExtra("str_message", str_message);









<AlarmShowActivity 액티비티>

Intent isms = getIntent();

String str_receiver = isms.getStringExtra("str_receiver");
String str_message = isms.getStringExtra("str_message");



MessageActivity에 입력한 값을 AlarmShowActivity로 가지고 오고 싶은데 계속 null값만 가지고 오네요 ㅠㅠ 잘못된 부분이 있나요?ㅠㅠ..

(참고로 MessageActivity에서 str_message나 str_receiver을 찍어보면 잘 나옵니다!)
다시시작해보자 (200 포인트) 님이 2014년 8월 7일 질문
글쓴이 : 해당 코드 입니다!..

<MessageActivity 액티비티>


<

package com.andro;

import android.*;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.*;
import android.database.sqlite.*;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class MessageActivity extends Activity implements OnClickListener {
    private DBManager dbmgr;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
            setContentView(R.layout.message);
        
        /** 버튼 클릭 대기 : 시작 **/
        Button btn_ok = (Button) findViewById(R.id.button_save); // id 가 button_save(message.xml)인 버튼의 초기화
        btn_ok.setOnClickListener(this);
        /** 버튼 클릭 대기 : 끝 **/
        
       try{
           // DBManager 객체 생성(DB존재하지 않은면 생성)
           dbmgr = new DBManager(this);
        
           // DB연결
           SQLiteDatabase sdb = dbmgr.getReadableDatabase();
        
           // SQL문 실행 결과를 CURSOR 객체로 받음.
           Cursor cursor = sdb.rawQuery("select receiver, message from message", null);
            
           // cursor 객체로 할당된 message 테이블 데이터를 한 행씩 이동하면서 출력함.
           while(cursor.moveToNext()) {
               String receiver = cursor.getString(0);
               String message = cursor.getString(1);
        
           // 수신번호 출력
           EditText et_receiver = (EditText)findViewById(R.id.edit_receiver);
           et_receiver.setText(receiver);
            
           // 메세지 출력
           EditText et_message = (EditText)findViewById(R.id.edit_message);
           et_message.setText(message);
           }
        
        // cursor 객체 닫음
        cursor.close();
        
        // dbmgr 객체 닫음
        dbmgr.close();
        }
        
        catch (SQLException e) {
            // db접속 또는 조회 시 에러 발생할때
        }
}
   
    // 저장버튼 누르면.. 저장됨
    public void onClick(View v)
    {
        // 입력된 연락처 추출
        EditText et_receiver = (EditText)findViewById(R.id.edit_receiver);
        final String str_receiver = et_receiver.getText().toString();
            
        // 입력된 메세지 내용 추출
        EditText et_message = (EditText)findViewById(R.id.edit_message);
        final String str_message = et_message.getText().toString();
        
        Intent isms = new Intent(MessageActivity.this, AlarmShowActivity.class);
        isms.putExtra("str_receiver", str_receiver);
        isms.putExtra("str_message", str_message);
        
        try
        {
            // DB객체 생성(DB가 존재하지 않으면 생성)
            dbmgr = new DBManager(this);
       
            SQLiteDatabase sdb;
            
            // DB연결
            sdb = dbmgr.getWritableDatabase();
            
            // message 테이블에 정보 저장
            String sql = "insert into message values('"+ str_receiver +"','" + str_message + "')" ;
            sdb.execSQL(sql);
            
            // DB닫음
            dbmgr.close();
        }
            
        catch(SQLException e)
        {
            // 예외처리 (생략)
        }
 
        
        // '저장' 버튼 누를 시, 저장되고 알림창이 뜸
        // 알림창을 띄움
        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setTitle("알림창");
        alert.setMessage("메세지가 저장 되었습니다. "+ str_receiver + str_message);
        alert.setIcon(R.drawable.tab2);
        
        // 알림창의 '확인' 버튼을 누를 경우, 이전 창으로 돌아감
        alert.setPositiveButton("확인",  new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dlg, int whichButton) {      
                Intent i = new Intent(MessageActivity.this , SubMainActivity.class);                 
                startActivity(i);          
            }    
        });
        
        // 알림창을 보여줌
        alert.show();
        }
}
글쓴이 : 해당 코드 입니다!..

<AlarmShowActivity 액티비티>

package com.andro;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.media.MediaPlayer;
import android.os.*;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class AlarmShowActivity extends Activity implements OnClickListener {
    private DBManager dbmgr;
    TextView textViewAlarmedTime;
    MediaPlayer mp;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.alarm_show);
       
        textViewAlarmedTime = (TextView)findViewById(R.id.textViewAlarmedTime);
       
                    
        final Runnable sendRunnalbe;
        final Handler mHandler;
       
        Intent isms = getIntent();
               
        String str_message = isms.getStringExtra("str_message");
        String str_receiver = isms.getStringExtra("str_receiver");


       
               
       
               
        //================================
        //1. 알림이 울린다.
        //================================
        mp = MediaPlayer.create(this, R.drawable.alarmsong);
        mp.setLooping(false);
        mp.start();
        textViewAlarmedTime.setText( "내용 :"+str_message+ "연락처 :" +str_receiver);
       
        //================================
        //1-1. 10초 후에 문자 날리도록 핸들러 등록
        //================================
        //Runnable 객체 생성.
        sendRunnalbe = new Runnable() {
            @Override
            public void run() {
                                mp.pause();
                            }
        };
       
        //핸들러(mHandler)로 5초 후에 sendMessage 객체 수행하도록 함.
        mHandler = new Handler();
        mHandler.postDelayed(sendRunnalbe, 5000); //5초 후 [sendMessage] 동작
       
       
        //=================================
        //2. 클릭이 됨과 동시에 알림 음악 중지
        //=================================
        textViewAlarmedTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void  onClick(View v) {
                mp.pause(); // 알람음이 멈춤
       
        //=================================
        //2-1. 10초후에 문자를 날리라고한 핸들러 중지
        //=================================
                mHandler.removeMessages(0);
               
                Intent intent_stopAlarm = new Intent(AlarmShowActivity.this, SubMainActivity.class);
                startActivity(intent_stopAlarm);
            }
        });
    }

    /** 문자전송: 시작 **/
    private void sendSMS(String str_receiver, String str_message)
    {        
        String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";
 
        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
            new Intent(SENT), 0);
 
        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
            new Intent(DELIVERED), 0);

        //---when the SMS has been sent---
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS sent",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                        Toast.makeText(getBaseContext(), "Generic failure",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        Toast.makeText(getBaseContext(), "No service",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                        Toast.makeText(getBaseContext(), "Null PDU",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                        Toast.makeText(getBaseContext(), "Radio off",
                                Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        }, new IntentFilter(SENT));

        //---when the SMS has been delivered---
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS delivered",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case Activity.RESULT_CANCELED:
                        Toast.makeText(getBaseContext(), "SMS not delivered",
                                Toast.LENGTH_SHORT).show();
                        break;                        
                }
            }
        }, new IntentFilter(DELIVERED));
        
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(str_receiver, null, str_message, sentPI, deliveredPI);  
    }
    /** 문자전송: 끝 **/

    @Override
    public void onClick(View v) {
        finish();
    }
}
Intent isms = new Intent(MessageActivity.this, AlarmShowActivity.class);
         isms.putExtra("str_receiver", str_receiver);
         isms.putExtra("str_message", str_message);

요렇게 isms 인텐트에 넣어주고 난 후에
startActivity(isms) 가 있어야하지않을까요? 어딧나염

2개의 답변

0 추천

AlarmShowActivity 액티비티 실행되면서 디버깅으로 찍어보셨나요?

위 소스상으로 보면 크게 문제될건 없어보이는데요.

보내는 값이 String 이 아닌 int나 double형이 었다면 null이 나올 수 있지만,

보내고 받는 값이 모두 String 이라면. 정상적으로 나올 거 같습니다.

개발자초심 (21,220 포인트) 님이 2014년 8월 8일 답변
아무리해도 정상적으로 안나오고 null값으로만 나오네요 ㅠㅠ..
0 추천

MessageActivity에서

public static String str_message,str_message;해주시고 

str_message = et_receiver; 이렇게 해주시고 

AlarmShowActivity에서 

String name = package명.MessageActivity.str_message;

이렇게 해주시면 사용 가능하시고요, 

EditText 먼저 선언해 주시고 

 

밑에서 사용하는식으로 바꿔보세요

 
ysy00115 (2,350 포인트) 님이 2014년 8월 8일 답변
...