이제 안드로이드 프로그래밍을 막 시작한 새내기+초보입니다. ^^;
제가 두개의 버튼(d_1, d_2)을 통해서
버튼을 하나 눌렀을 때, 그 버튼에 연결되어 있는 Sting 의 text (R.string. cd_1, cd_2) 을 EditText로 보내려 합니다.
그리고 난 다음에, EditText에서 text를 받아서 Dial 버튼을 통해 전화를 연결하려고 합니다.
워낙 초보라.. 아무리 해도 오류가 나서 실행이 안되더라구요.
1) Button을 여러개 묶어서 그 중에 하나 선택하는 것은 어떤 것으로 해야하나요?
2) EditText로 text를 전송시키려면 어떻게 해야하나요?
3) 지금 한 것이 어느 정도 틀렸나요.. ㅠ 다 엎을 정돈가요?
미리 감사합니다~
package com.andro.PhoneCall;import android.content.Intent;
import android.net.Uri;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.view.View.OnClickListener;
public class PhoneCallActivity extends Activity implements OnClickListener{
EditText edit=(EditText)findViewById(R.id.edit);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button d_1 =(Button)findViewById(R.id.d_1);
d_1.setOnClickListener(new View.OnClickListener()
{public void onClick(View v)
{edit.setText((CharSequence) findViewById(R.string.cd_1));
}});
Button d_2 =(Button)findViewById(R.id.d_2);
d_2.setOnClickListener(new View.OnClickListener()
{public void onClick(View v)
{edit.setText((CharSequence) findViewById(R.string.cd_2));
}});
}
@Override
public void onClick(View v) {
Button dial =(Button)findViewById(R.id.dial);
dial.setOnClickListener(this);
performDial();
}
public boolean onKeyDown(int keyCode, KeyEvent event)
{if (keyCode==KeyEvent.KEYCODE_CALL){performDial(); return true;} return false;}
public void performDial()
{if (edit !=null)
{try {startActivity (new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+edit.getText())));
} catch (Exception e)
{e.printStackTrace();}
}
}}
findViewById()의 용도는
http://developer.android.com/reference/android/app/Activity.html#findViewById(int)
위 링크와 같습니다 액티비티에서 사용되는 View를 매개변수로 넘겨주는 id 값을 이용하여 리턴하는 용도로 사용됩니다.
strings.xml에서 정의한 string을 이용하시고자 한다면 getString(int id)를 이용하셔야 합니다.
그리고 findviewbyid()를 통하여 view를 리턴 받기 위해서는 우선적으로 setContentView()를 이용해서 액티비티에서 사용할
뷰를 넣어야 하는데 onCreate() 바깥에서 저리 선언하시면 null 익셉션 나실꺼 같군요.
그리고 그 외에는 너무 틀린곳이 많아서 일일이 전부 설명하기에 힘들군요;
예제를 통해서 확실히 기본을 익히신 후에 다시 해보시는게 좋을듯 합니다.




로그캣에서 어떤 에러가 나시는지 모르겠네요.
일단 눈에 보이는건.. 스트링을 findViewById로 하시면 못불러올텐데요...
getResources().getString(R.string.cd_1) 이런 식으로 불러오셔야할거예요.
그리고 EditText 를 findViewById로 정의하시는 것도 onCreate안에서 해주셔야 할 것 같네요.
음.. 그리고 call버튼을 왜 onClick에서 정의하셨나요?