나는 활동 중 일부 사용자 정의 View
에서 작업 해 왔습니다. 이제 해당 활동에 EditText
이 있다고 가정 해 봅시다. 그리고 난 View
View
내가 그 View
(이는 내가 onTouch
방법에서 수행하려는 것을 의미합니다)을 만지면 EditText
에있는 값을 얻고 싶습니다. 문제는, 나는 분리 된 클래스의 나의 커스텀 View
에 대해 연구 해왔다. 그리고 나는 그것을 끝내는 길을 찾을 수 없다. 나는 처음에 findViewbyId
메서드를 사용하여 ID를 얻으려고 생각했지만 실행 취소 할 수있는 것처럼 보입니다. 그래서, 어떤 도움이나 아이디어도 크게 감사드립니다. 여기 EditText에서 사용자 정의보기로 문자열을 가져 오는 방법
activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_nono"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="snacker.nonogramsolver.NonoActivity">
<snacker.nonogramsolver.Nono /* MY CUSTOM VIEW */
android:id="@+id/NonoView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
... /*some elements are here, not important for this question*/
<EditText
android:id="@+id/line_input"
android:layout_width="200dp"
android:layout_height="wrap_content" />
</LinearLayout>
내 사용자 정의보기 자바 파일 :
package snacker.nonogramsolver;
import ...;
public class Nono extends View implements View.OnTouchListener{
... /* some variables */
public Nono(){
super(null);
};
public Nono(Context context){
super(context);
//initializeBoard(10,10);
mCellWidth = mCellHeight = this.getWidth()/(mWidth);
}
public Nono(Context context, AttributeSet attrs){
super(context, attrs);
...}
... /* SOME CODES ARE HERE, NOT IMPORTANT FOR THIS QUESTION */
public boolean onTouch(View v, MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN) {
mXNow = getCol(event.getX());
mYNow = getRow(event.getY());
if(mYNow == -1 && mXNow != -1){
/* THIS IS WHERE I WANT THIS METHOD TO GET VALUE FROM EDITTEXT */
}
invalidate();
return true;
}
return false;
}
내 활동 자바 파일 :
public class NonoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
;
setContentView(R.layout.activity_nono);
Intent intent = getIntent();
int width = intent.getIntExtra("width", 5);
int height = intent.getIntExtra("height", 5);
Button btn = (Button)findViewById(R.id.btn_clear);
Nono sdk = (Nono)findViewById(R.id.NonoView);
sdk.setOnTouchListener(sdk);
sdk.initializeBoard(width,height);
btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
Nono sdk = (Nono)findViewById(R.id.NonoView);
sdk.initializeBoard(sdk.mWidth,sdk.mHeight);
}
});
}
}
'sdk.findViewById (R.id.line_input) '에 의해 작동해야합니다. – cYrixmorten
'Nono'에 대한 레이아웃은 무엇입니까? –
@cYrixmorten 해결되었습니다. 그것 참 부끄럽 네. 나는 R.id를 여기서도 사용하지 않을 생각이다. 하지만 왜 R을 사용할 수 있는지 말해 주실 수 있습니까? R에이 패키지의 모든 ID가 포함되어 있습니까? 나는 안드로이드에 아주 익숙하다. 그래서 나는 R이 지역적으로 사용되고 있다고 생각하고 있었다. – SnackerH