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

Fragment에서 setText가 안되네요

글쓴이 : 초보SW개발자 날짜 : 2018-01-29 (월) 16:18 조회 : 2375
글주소 : http://www.androidside.com/B49/169214
 
  반도체전문업체 NXP반도체
반도체전문업체, 휴대전화, 가전, ID, 범용반도체, 소프트웨어, 반도체제품안내.
www.nxp.com
  구로 오라클자바교육센터
개발회사 부설 교육기관, 현업강사 단기속성 실무강좌, 재직자환급, 구직자 무료취업
www.oraclejava.co.kr
  앱제작사 바이더앱
어플개발, 안드로이드, 아이폰, 어플맞춤제작, 쇼핑몰앱제작, 무료상담
www.buytheapp.co.kr
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. 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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기