2013-10-04 3 views
0

안드로이드 프래그먼트를 작성하여 응용 프로그램 전체에서 재사용 할 수있는 금액 삽입 상자를 구현하는 방법을 배우려합니다. 그래서 일부 EditText 상자가있는 간단한 XML 파일을 만듭니다.안드로이드 프래그먼트에서 MyActivity.java로 정보를 얻는 방법

public class AmountFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.amount_fragment, container, false); 
     return view; 
    } 
} 

난 다음 다른 xml 파일이 조각을 사용합니다 : 이것은 잘 지금까지 작동

<fragment 
    android:name="com.example.android.ui.widget.AmountFragment" 
    android:id="@+id/transaction_amount" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 

그때 AmountFragment.java라는 관련된 자바 파일을 만들었습니다. 그것은 조각을 잘 보여 주며 그 안에 숫자를 삽입 할 수 있습니다. 이제 mainActivity에서 삽입 된 텍스트를 가져올 수 있어야합니다. 그래서 나는 안드로이드 워드 프로세서에서 this page on Fragments을 읽었지 만, 나는 완전히 잃어 버렸습니다. 그들이 보여주는 코드는 전혀 이해가되지 않습니다. 나는 인터페이스를 정의 할 필요가있다. 그러나 나는 그 인터페이스와 관련이 없다는 단서가 없다. 단순히 복사하여 붙여 넣으려고했지만 InflateException이 발생합니다. 내가 무슨 일이 일어나는지 알지 못하기 때문에 해결책을 찾을 곳이 없다.

내 질문 : 아무도 내게 그것을 사용하는 활동이 조각을 인터페이스하는 방법에 대한 몇 가지 포인터를 줄 수 있습니까?

답변

1

다음 코드를 시도해보십시오.

String anyObject = "Yay something"; 
((MainActivity)getActivity()).getMessage(anyObject); 

여기에서 일어나고있는 것은 getActivity()에 포함 된 Activity의 인스턴스를 얻을 것입니다 :

MainActivity.javaAmountFragment 쓰기에 다음, 당신의 AmountFragment에서 개체를 얻을 것이다

public void getMessage(Object obj) { 
    Log.d("My App", "Look at my object " + obj.toString(); 
} 

추가 프래그먼트를 만든 다음 활동으로 캐스팅합니다 (MainActivity). 작성한 수신자 메소드를 호출합니다.

+0

팁 주셔서 감사합니다! 실제로 완벽합니다. 또 다른 일. 물론 EditText의 결과를 MainActivity로 가져오고 싶습니다. 그래서'EditText et = (EditText) findViewById (R.id.amount);'를 시도했지만 findViewById (int) 메소드가 AmountFragment 타입에 대해 정의되지 않았다고 불평합니다. MainActivity의 xml에서 제출 버튼을 클릭하면 mainActivity에 대한 특정 EditText의 결과를 어떻게 얻을 수 있었는지 어떤 아이디어가 있습니까? – kramer65

+0

거기 비슷한 수정. 'getActivity(). findViewById (R.id.amount)'가 작동합니다. 또한이 방법으로 문제가 해결되면이 질문에 대한 답을 다른 사람들에게 맞게 수정하십시오. 감사. – bclymer

관련 문제