2012-06-23 3 views
4

내 레이아웃 폴더에 log.xml이라는 새로운 .xml 파일을 만들었습니다. 하나만 TextView 포함되어 있습니다.다른 레이아웃 xml의 텍스트 뷰를 주 활동에서 업데이트

내 주요 활동에서 log.xml에있는 textview에 텍스트를 설정할 수 있습니까? 또는 log.xml을보기로 사용하는 활동에서만 설정 될 수 있습니까? 당신이 여기서 내가 의미하는 바를 얻길 바래요, 그렇지 않으면 정교하지 못하길 바랍니다. 당신은 당신이에 대한 이야기는 XML 설정하지 않으면

감사

+0

귀하의 mainActivity는 main.xml이라는 기본 레이아웃을 가지고 있으며 새로운 레이아웃 log.xml을 추가 했으므로 새 Activity를 만들어야하고, 그 값을 첫 번째 Activity (MainActivity)에서 Intents를 사용하여 변경할 수 있습니다 – Houcine

+0

언제 log.xml을 표시 할 계획입니까? 새 Activity에서 ListView (또는 Spinner 등)의 행으로 현재 활동의 새보기로? – Sam

+0

@Sam 내 main.xml의 버튼을 클릭 할 때 새로운 활동으로. – Johan

답변

10

는 "된 setContentView()를"당신은 항상 레이아웃 인플레이터로를 얻을 수 있습니다. addView()를 사용하여 현재 레이아웃에 TV를 추가해야합니다.

LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

View vi = inflater.inflate(R.layout.log, null); //log.xml is your file. 
TextView tv = (TextView)vi.findViewById(R.id.tv); //get a reference to the textview on the log.xml file. 
+0

나는 그것을 시험해 볼 것이다, – Johan

+0

그냥 내가 무엇을 찾고있다. 감사. –

+0

안녕하세요, Nuno, 위의 팽창은 잘 작동합니다. 특정 위치에서 textview 값을 업데이트하고 싶습니다. 어떤 도움.? 왜냐하면 내부 레이아웃 때문에 버튼을 클릭하면 서버에서 응답을 얻고 특정 텍스트 뷰에서 업데이트를 표시하기 때문에 – harikrishnan

-1

나는 당신이 말하는 것을 이해하고 있다고 생각합니다. 이 작업을 수행 할 경우 textView2 당신의 텍스트를 설정 할 텍스트 뷰의 ID입니다

TextView tv = (TextView) findViewById(R.id.textView2);  
tv.setText(output); 

, 당신은 setText() 기능을 사용하여 임의의 문자열 값으로 설정할 수 있습니다. 희망이 도움이!

+0

log.xml이 현재 표시되어 있지 않으면'tv'는 null이됩니다. – Sam

+0

그는 이것을 할 수 있을까요? 'TextViewActivity.findViewById (R.id.textView) ' 여기서'TextViewActivity'는 텍스트보기가있는 활동입니까? – eaglzfn37

+0

findViewById()는 현재 Activity 또는 부풀려진 View에서만 작동합니다. – Sam

0

현재 보이는 보이는 레이아웃에 log.xml이 포함되어 있지 않으면 findViewById()는 null을 반환합니다.

새 활동에로드 할 때 TextView의 텍스트를 설정하려는 경우 활동을 시작하는 데 사용 된 의도에 새 String을 전달할 수 있습니다. 세컨드 활동의에서 onCreate()에서

Intent intent = new Intent(this, Second.class); 
intent.putExtra("myTextViewString", textString); 
startActivity(intent); 

: 첫 번째 활동에서 적절한 온 클릭에

는() 솔루션 아래

setContentView(R.layout.log); 

TextView textView = (TextView) findViewById(R.id.textView); 
Bundle extras = getIntent().getExtras(); 
if(extras != null) { 
    String newText = extras.getString("myTextViewString"); 
    if(newText != null) { 
     textView.setText(newText); 
    } 
} 
0

은 나를 위해 일한 -

  1. 레이아웃 XML 파일의보기 객체 가져 오기 (예 : toast_loading_data) -

    View layout = inflater.inflate(R.layout.toast_loading_data, 
         (ViewGroup) findViewById(R.id.toast_layout_root)); 
    
  2. 이 뷰에서 TextView 요소를 가져옵니다 (예 : 텍스트 뷰 아이디 - toast_text 참조) - 텍스트 뷰의

    TextView tvToast = (TextView) layout.findViewById(R.id.toast_text); 
    
  3. 설정 텍스트 - 아래

    tvToast.setText("Loading data for " + strDate + " ..."); 
    
  4. 는 주요 활동에서 사용자 정의 토스트 메시지 미리보기입니다 -

    View layout = inflater.inflate(R.layout.toast_loading_data, 
         (ViewGroup) findViewById(R.id.toast_layout_root)); 
    TextView tvToast = (TextView) layout.findViewById(R.id.toast_text); 
    tvToast.setText("Loading data for " + strDate + " ..."); 
    Toast toast = new Toast(getApplicationContext()); 
    toast.setGravity(Gravity.CENTER, 0, 0); //Set toast gravity to bottom 
    toast.setDuration(Toast.LENGTH_LONG); //Set toast duration 
    toast.setView(layout); //Set the custom layout to Toast 
    

희망 도움이

관련 문제