2013-06-06 2 views
0

내가 레이아웃 인플레이터를 통해 내부 텍스트 뷰에 접근 할 필요가 토스트에 텍스트 뷰하기설정 값은 프로그래밍 방식

sudo는 hirarchy :

<relative layout id="rlRoot"> 
<relative layout> 
    <linear layout> 
    <linear layout> 
    <relative layout id="rlTv"> 
     <textView id="tvOne"> 

나는 동적으로 토스트를 통해 아이디 tvOne에 대한 값을 설정합니다.

논리는 내가

LayoutInflater inflater = getLayoutInflater(); 
View layout = inflater.inflate(R.layout.test, (ViewGroup) findViewById(R.id.rlRoot)); 
TextView txtId = (TextView) layout.findViewById(R.id.tvOne); 
txtId.setText("Id: " + getId()); 

Toast toast = new Toast(getApplicationContext()); 

toast.setGravity(Gravity.FILL, 0, 0); 
toast.setDuration(Toast.LENGTH_LONG); 
toast.setView(layout); 
toast.show(); 

다음과 같이 사용하지만이 "창 관리자에 연결되지 않은보기"를 제공합니다. 또한 rlRoot를 rlTv로 변경했습니다. 그러나 같은 오류. 이 중첩 된 텍스트보기에 액세스하려면 어떻게해야합니까? 로직이 onCreate()에있는 경우

+0

네, 그렇다고해서 문맥에 문제가되지는 않습니다. 사실 textView 위에 setView 함수를 호출 한 후 코드에서 보이지 않도록 설정 한 단추가 있습니다. inflater.inflate (R.layout.test, null)를 설정 한 후 논리가 올바르게 작동하고있는 것처럼 보입니다. –

답변

1

다음이 같이

View layout = inflater.inflate(R.layout.test, null); 

View layout = inflater.inflate(R.layout.test, (ViewGroup) findViewById(R.id.rlRoot)); 

이 줄을 변경합니다. 이게 당신을 도울 수 있기를 바랍니다.

+0

실제로는 onCreate에 없지만 별도의 함수입니다. 그러나 ρяσѕρєя K의 코멘트에서 null로 설정함으로써 언급했듯이, 그것은 효과가있었습니다. 우리가 viewGroup을 지정하면 원래이 질문에서 물었던 것처럼 정확한 부모를 여행해야한다고 생각합니다. 그러나 null 인 경우에는 기본적으로 지정한대로 inflated xml의 루트를 결정합니다. 어쨌든 당신의 anwser 주셔서 감사합니다. –