2013-06-20 4 views
2

저는 자바와 안드로이드 프로그래밍에있어서 매우 새로운 기술입니다. 한 액티비티의 변수 묶음을 ListFragment를 확장하는 클래스에 첨부 된 XML 파일에 setContentView를 사용하는 다른 액티비티를 통해 전달하는 방법을 알아 내려고합니다. 기본적으로, 나는 첫 번째 액티비티의 데이터가 두 번째 액티비티에서 액세스되는 Fragment에 의해 액세스되기를 원한다. 나는 지금까지 이걸 쓸모있게 연구하려 했으니, 이미 대답이 이미 존재한다면 용서해주십시오. 나는이 지금까지 가지고 ListActivity.java에서액티비티에서 안드로이드의 조각으로 데이터 전달하기

Intent intent = new Intent(this, ListActivity.class); 
Bundle varBundle = new Bundle(); 
varBundle.putString("companyKey",companyKey); 
varBundle.putString("techID",techID); 
varBundle.putString("userID",userID);  
varBundle.putString("startDate",startDate); 
intent.putExtras(varBundle); 
startActivity(intent); 

:

public class ListActivity extends Activity 
{ 
public String companyKey; 
public String techID; 
public String userID; 
public String startDate; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    Bundle vars = getIntent().getExtras(); 

    companyKey = vars.getString("companyKey"); 
    techID = vars.getString("techID"); 
    userID = vars.getString("userID"); 
    startDate = vars.getString("startDate"); 

    setContentView(R.layout.fragmentlist); 


} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.list, menu); 
    return true; 
} 

} 

내가 fragmentlist 할 내용보기를 설정

나는 다음과 같은 작업을 수행 Login.java라는 활동이있다. xml :

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/titles" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:name="com.example.technicianappointmentlist.OrderList" /> 

Fragmentlist.xml은 OrderList.java와 관련되어 있습니다. 여기에서 ListActivity.java로 전달 된 번들의 데이터에 액세스 할 수 있어야합니다.

public class OrderList extends ListFragment 
{ 
//THIS IS WHERE I WANT TO ACCESS THE VARIABLES PASSED INTO ListActivity.java  
public OrderList() 
{ 
    super(); 
    // TODO Auto-generated constructor stub 
} 


@SuppressWarnings({ }) 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

} 
} 

이것은 가능합니까? 다시 한번 신의 질문인데 죄송 합니다만 아직 답변을 찾지 못했습니다.

미리 감사드립니다. 당신의 조각은 항상 해당 활동에 부착 할 것입니다 경우

+0

메신저 확실하지 내가 제대로을 가지고했다, 그러나 당신의 조각이보기에, 당신을 수 그냥 거기에서 찾은 다음 데이터를 전달하십시오. – user902383

+0

우선, 조각을 사용하고 있다면'ListActivity'는 목록 활동이 아니어야합니다. SDK> 11을 목표로한다면 'Activity', 지원 라이브러리에서'FragmentActivity'를 사용하십시오 – tyczj

+0

감사합니다 입력. 고맙습니다. –

답변

1

당신은

String companyKey = ((ListActivity)getActivity()).companyKey; 
String techId = ((ListActivity)getActivity()).techId; 
String userId = ((ListActivity)getActivity()).userId; 
String startDate = ((ListActivity)getActivity()).startDate; 
+0

이것은 내가 찾고 있었던 것이다. 감사합니다. –

1

(당신의 조각 내에서)를 호출 할 수 있습니다, 당신은 당신의 활동에 공개 방법을 만들 수 있습니다. 그럼 그냥 조각과 활동 사이의 관계 강화 :이 커플 링은 취향에 너무 꽉 경우

public class OrderList extends ListFragment { 
    private MyListActivity activity; 

    @Override 
    public void onAttach(Activity activity) { 
     if (!(activity instanceof MyListActivity)) { 
      throw new IllegalStateException("must be attached to an instance of MyListActivity!"); 
     } 
     this.activity = activity; 
    } 

    /* elsewhere you can call public methods defined in MyListActivity */ 
} 

을 대신 인터페이스를 만들고, 활동이 그 인터페이스를 구현 할 수 있습니다.

다른 방법으로도 작업을 수행 할 수 있습니다. FragmentManager를 사용하여 활동의 조각을 찾기가 OrderList의 인스턴스인지 확인하고 전화를 공공 방법을 그 위에 :

OrderList fragment = (OrderList) getFragmentManager().findFragmentById(R.id.titles); 
fragment.whatever(); 
+0

이 팁을 가져 주셔서 감사합니다. 고맙습니다. –

+1

onAttach (Activity)는 이제 더 이상 사용되지 않으며 onAttach (Context) – Bamerza

관련 문제