2013-08-03 2 views
0

문제는 조각 내에서 레이아웃에 대한 포인터를 얻는 방법을 모르겠다는 것입니다. Java에서 레이아웃 포인터를 얻으려면 다음과 같은 작업을 수행해야합니다.조각에 정보를 동적으로 추가

LinearLayout llTemp = (LinearLayout) findViewById(R.id.llTemp) 

이 라인에 뭔가가 있습니다.

이제 내가하고있는 일은 메인 클래스의 서버에서 정보를 가져 와서 같은 클래스 내에서 조각을로드하는 것입니다. 외부 클래스에서로드 된 정보로 프래그먼트를 채우고 싶습니다. 이 일을 할 수있는 방법이 있습니까? 나는 그 조각 내에서 레이아웃을 잡았을 뿐이므로 그렇게 할 수는 있지만 조각 안에있는 것처럼 그것에 대한 참조를 만들 수는 없다.

나는 이것이 일반적인 문제라고 확신하지만 특별히 이것에 관해서는 아무것도 찾을 수 없었다.

View view = inflater.inflate(R.layout.main_frag, container, false); 
mainLayout = (LinearLayout) view.findViewById(R.id.ll_MainFrag); 
return view; 

이 내 onCreateView에있는 것입니다 : 사전에

감사합니다, 건배, 제이크

는 의견을 답변합니다.

그냥이 조각 인스턴스화하고있어 추가하는 방법, 좋아 : 나는 같은 것을 할 수 있도록하고 싶습니다 여기에서

private int MAIN = 1; 
FragmentManager fm = getSupportFragmentManager(); 
fragments[MAIN] = new MainFragment(); 

FragmentTransaction transaction = fm.beginTransaction(); 
transaction.commit(); 

getSupportFragmentManager().beginTransaction().add(R.id.flMain, fragments[MAIN]).commit(); 

을하십시오 조각을 만들 때

fragments[MAIN].createTextView(); 
+0

조각의 onCreateView는 어떤 모습입니까? –

+1

"메인 클래스"란 무엇입니까? 만약 그것이'Activity'라면, 유지하고있는'Fragment'에서 public 메소드를 호출 할 수 있습니다. – Squonk

+0

그래, 나는 활동을 시작한 다음 활동 내에서 단편을 만든다. 그런 다음 내 활동 내 서버에서 정보를 얻고 그 정보를 사용하여 본질적으로 조각 내에서 목록을 만들고 싶습니다. –

답변

1

을 만들 데이터를 설정하는 public 메소드 :

public class MyFragment extends Fragment { 
    private TextView text1; 
    private TextView text2; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View layout = LayoutInflater.from(getActivity()).inflate(R.layout.simple_list_item_2,container,false); 

     text1 = (TextView) layout.findViewById(R.id.text1); 
     text2 = (TextView) layout.findViewById(R.id.text2); 

     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

    public void setData(String t1, String t2){ 
     text1.setText(t1); 
     text2.setText(t2); 
    } 
} 

부모 작업에 단편을 추가 할 때 고유 한 태그를 지정하십시오.

MyFragment f = new MyFragment(); 
getFragmentManager().beginTransaction().add(f,"my_fragment").commit(); 

나중에 부모 활동의 조각을 검색하고 그 위에 몇 가지 방법을 호출 할 수 있습니다 조각이 레이아웃에서 추가 된 경우

MyFragment frg = (MyFragment) getFragmentManager().findFragmentByTag("my_fragment"); 
if(frg != null){ 
    frg.setData("abc","def"); 
} 

또한, 당신은 id으로 조각을 찾을 수 있습니다.

관련 문제