2015-01-15 2 views
0

나는 ActionBar가 있으며 탭이 있습니다. MainActivity에는 구현 된 LocationListener가 있습니다.Android Activity가 단편에 좌표 값을 전달하는 방법은 무엇입니까?

onLocationChanged (위치 정보) 메소드에서 경도 값을 double 경도 변수에 저장합니다.

이 값을 RunFragment 클래스에 전달하고 싶습니다.

아무도 도와 줄 수 있습니까?

는 MainActivity 코드 :

공용 클래스 :

공용 클래스 MainActivity가 FragmentActivity가 ActionBar.TabListener, LocationListener를 구현 확장 {

ActionBar actionbar; 
ViewPager viewpager; 
FragmentPageAdapter ft; 

double longitude; 

private LocationManager lm; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    viewpager = (ViewPager) findViewById(R.id.pager); 
    ft = new FragmentPageAdapter(getSupportFragmentManager()); 

    actionbar = getActionBar(); 
    viewpager.setAdapter(ft); 
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    actionbar.addTab(actionbar.newTab().setText("Run").setTabListener(this)); 
    actionbar.addTab(actionbar.newTab().setText("Map").setTabListener(this)); 
    actionbar.addTab(actionbar.newTab().setText("Statistics").setTabListener(this)); 
    viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {    

    }); 


protected void startLocationUpdate() { 
    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
} 


public void onLocationChanged(Location location) { 
    longitude=location.getLongitude(); 

은}

이는 RunFragment 코드 RunFragment extends Fragment {

,210
TextView tv; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    View view = inflater.inflate(R.layout.run_layout, container, false); 
    tv =(TextView)view.findViewById(R.id.textView1); 

    return view; 

} 


public void setTv(String string){ 
    tv.setText(string); 
} 

}

답변

0

당신이 findViewById()을 통해 활동에 RunFragment에 대한 참조를 얻을 수 있습니까? 그런 다음 RunFragment에 메소드를 추가하고 onLocationChanged()에서 호출하십시오. 조각 onCreateView 방법에

Bundle bundle = new Bundle();<br/> 
    bundle.putString("edttext", "From Activity");<br/> 
    // set Fragmentclass Arguments<br/> 
    Fragmentclass fragobj = new Fragmentclass();<br/> 
    fragobj.setArguments(bundle);<br/><br/> 

: 활동에서

+0

내가 참조를 얻을 수있는 방법을 모르겠어요. 제발 그걸 적어주세요. – kalmi

1

당신은 같은 목적으로 데이터를 전송

@Override<br/> 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,<br/> 
     Bundle savedInstanceState) {<br/> 
    String strtext = getArguments().getString("edttext"); <br/> 
    return inflater.inflate(R.layout.fragment, container, false);<br/> 
    } 
+0

영원히 초를 보낼 수 있습니까? 원인 위치는 매 초마다 변경되지만 onCreateView는 하나만 실행됩니다. – kalmi

+0

시나리오에서 브로드 캐스트 수신기의 일부 형식으로 위치 변경 내용을 수신 한 다음 호출 된 조각 내에서 이에 따라 대응하는 것이 거의 타당합니다. 프래그먼트를 한 번에 채우고 호출하기 때문에 위치 값을 변경하기 위해 도움이되지 않습니다. –

관련 문제