총 게시물 38,965건, 최근 3 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

Fragment에서 setText가 안되네요

글쓴이 : 초보SW개발자 날짜 : 2018-01-29 (월) 16:18 조회 : 441
글주소 : http://www.androidside.com/B49/169214
 
  엠브이테크
임베디드 개발용역 및 양산 Rockchip Freescale 엑시노스
www.mvtech.or.kr
  SBS아카데미컴퓨터학원김하경
강남역, 취업전문학원, 맞춤형취업컨설팅, 수강료할인혜택조회, 스킬UP, 수강료조회
www.sbsdesign.kr
  SBS아카데미컴퓨터학원송강인
방학겨울방학특강단기속성과정, 방학할인이벤트최대40%할인, 강남역연결편리한위치
sbsartcenter.net
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

KakaoTalk_20180129_160718819.jpg
가운데 선 위가 MainActivity, 선 아래가 FirstFragment입니다.
선 위에 날씨정보를 MainActivity에서 Fragment로 줬습니다. 날씨정보를 받아서 setText를 하려고 하는데 안되네요
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
layout = (LinearLayout) inflater.inflate(R.layout.fragment_first,container,false);
tv = layout.findViewById(R.id.first);

bundle = getArguments();
if (bundle != null){
System.out.println("습도 : " + bundle.getString("humidity") + "%");
humidity = bundle.getString("humidity");
speed = bundle.getString("speed");
nowTemp = bundle.getString("nowTemp");
minTemp = bundle.getString("minTemp");
maxTemp = bundle.getString("maxTemp");

tv.setText("습도 : " + humidity);
}
return layout;
}
 if절안에 System.out.print한건 잘가져오는데 tv.setText가 안 바뀌네요(사진과 같이 그대로 '첫번째 페이지' 뜬다), refresh 해줘야되나요?



질문자가 자신의 포인트 10 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 8을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

안사 이쁜이 2018-01-29 (월) 16:18
축하드립니다. ;)
초보SW개발자님은 안사 이쁜이에 당첨되어 4 포인트 지급되었습니다.
초보SW개발자 2018-01-29 (월) 16:30
참고로 if절 밖에서 setText를 하면 됩니다. if절 안에 들어가면 안되네요
댓글주소 추천 0 반대 0
OSKiller 2018-01-29 (월) 16:31
글쎄요...
레이아웃 이 어케 생겨 먹었는지도 모르는지라...
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-29 (월) 16:33
[@OSKiller]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>

<TextView
android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="첫번째 페이지"
android:textColor="#000"
android:layout_gravity="center"
android:textSize="20dp"
android:textStyle="bold" />

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list_item"
/>


</LinearLayout>
텍스트뷰랑 리스트뷰 있습니다. FristFragment.xml입니다
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-29 (월) 16:36
[@OSKiller]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="kr.easesoft.app.googlemaplocation.MainActivity">

<!--<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="내 위치" />-->

<ToggleButton
android:id="@+id/toggleButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textOff="위치정보 수신"
android:textOn="위치정보 수신 종료"
/>



<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:gravity="center"
android:textSize="16dp"
android:text="TextView" />

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="20dp"
android:text="현재 위치" />

<TextView
android:id="@+id/address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#FFB2D9"
android:gravity="center"
android:textSize="16dp"
android:text="TextView" />
<TextView
android:id="@+id/nowTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="13dp"
android:text="업로드 시간" />

<TextView
android:id="@+id/weather"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:gravity="center"
android:textColor="#B2CCFF"
android:textSize="20dp"
android:text="TextView" />

<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"
/>

<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/ll">
</android.support.v4.view.ViewPager>
</LinearLayout>
main.xml입니다

댓글주소 추천 0 반대 0
OSKiller 2018-01-29 (월) 16:36
전체 코드를 보지 않으면 어디가잘못 됫는지 알수 없을것 같네요

댓글주소 추천 0 반대 0
OSKiller 2018-01-29 (월) 16:42
메인액티비티가 문제일것 같은데요 ㅎ
댓글주소 추천 0 반대 0
에찌 2018-01-30 (화) 10:59
if 절안에는 안되고 if 절 밖에는 된다는건 if 절안에가 호출이 안됬기때문에 안되는 거겠죠..?
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-30 (화) 11:06
[@에찌]
if절안에 System.out.println()한건 잘 찍히는데 setText를 하면 setText가 안되네요 
if절 밖에서는 setText가 되는데...ㅠ
댓글주소 추천 0 반대 0
에찌 2018-01-30 (화) 11:20
음 우선!
getString 한 것을 다른 String 변수에 넣어보세요.
그리고 setText 먼저해보시고 system println 을 해보세요 어찌되는지 함 봐야할듯하네요 ㅋ
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-30 (화) 11:28
[@에찌]
private String humidity,speed,nowTemp,minTemp,maxTemp;

onCreateView 안에
if (getArguments() != null){
            System.out.println("습도1 : " + getArguments().getString("humidity") + "%");
            humidity = getArguments().getString("humidity");
            speed = getArguments().getString("speed");
            nowTemp = getArguments().getString("nowTemp");
            minTemp = getArguments().getString("minTemp");
            maxTemp = getArguments().getString("maxTemp");
            System.out.println("습도2 : " + humidity + "%");
            tv.setText("습도 : " + humidity);
}

String에 담았을 때랑 담지않고 getString 한거랑 Run 결과는 둘다 잘나와요
I/System.out: 습도1 : 73%
I/System.out: 습도2 : 73%
setText는 둘다 안되네요 
댓글주소 추천 0 반대 0
에찌 2018-01-30 (화) 11:50
아...........
view =  inflater.inflate(R.layout.fragment_first,null);
이거
view =  inflater.inflate(R.layout.fragment_first, container, false);
로 바꿔보세요
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-30 (화) 11:55
[@에찌]
똑같아요 ㅠㅠ
둘의 차이점이 있나요?
댓글주소 추천 0 반대 0
          
          
에찌 2018-01-30 (화) 13:18
[@초보SW개발자]
흠 결론적으로는 차이가 없을 수도있겠네요...
댓글주소 추천 0 반대 0
에찌 2018-01-30 (화) 13:24
아.........
혹시 onStart 에 해보시거나 또는 핸들러를 만들어서 setText 해보세요!
아마 되실꺼에요 ㅋ
댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-30 (화) 14:28
[@에찌]
onStart에 넣어도 반응이 없네요 핸들러를 oncreatView에 써봣는데 핸들러도 무반응 ㅠ
댓글주소 추천 0 반대 0
OSKiller 2018-01-30 (화) 13:29
날씨 정보 받아 왔을때
페이저 프레그먼트에서 현재 보여주고 있는 프레그먼트를 가져와서
그프레그먼트에다가 set하세요

댓글주소 추천 0 반대 0
     
     
초보SW개발자 2018-01-30 (화) 14:39
[@OSKiller]
아 드디어 해결됫네요
MainActivity에 넣엇더니 되네요. 
firstFragment = (FirstFragment)fragmentManager.findFragmentById(R.id.vp);
firstFragment.setTextViewValue(humidity, speed, nowTemp, minTemp, maxTemp);
--------------------------------------------------------------------
FirstFragment
public void setTextViewValue(String humidity, String speed, String nowTemp, String minTemp, String maxTemp){
        tv.setText("습도 : " + humidity +", 풍속 : " + speed );
}
--------------------------------------------------------------------------------------
이렇게 하면 굳이 프레그먼트로 값을 안넘겨도 되겠네요
댓글주소 추천 0 반대 0
          
          
에찌 2018-01-30 (화) 15:59
[@초보SW개발자]
ㅋㅋㅋㅋㅋㅋㅋ제가 말씀드린 방법은 안되시나용? 궁금해서영 ㅋㅋ
댓글주소 추천 0 반대 0
               
               
초보SW개발자 2018-01-30 (화) 17:45
[@에찌]
네 에찌님이 말해주신 걸 먼저 해봤는데 안된네요
onstart에서 결과는 onCreatView에서 한거랑 같앗고 핸들러 쓸때는 system.out.println도 안되더라구요

댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기