即時通訊新的Android和迄今一切順利。直到我進入碎片地形。 在我的應用程序中,我希望用戶單擊活動中的按鈕。按下按鈕到目前爲止我打開一個片段,用戶可以在其中更改設置。 然後,我想關閉,刪除,只要我不再看到片段內的片段。Android。通過從片段中的按鈕調用片段中的方法來關閉片段?
因此:活動「A」,打開片段「a」。 - 做片段中的東西 - 用戶,通過按鈕調用「a」中的Method來關閉「a」。
這裏是我的xml文件的片段「一」:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="145dp"
android:orientation="vertical"
android:background="#EBDDE2" >
//took out a seekbar textview and checkbox for now.
<Button
android:id="@+id/buttonLeaveFragment"
style="@style/buttonredblack"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_below="@+id/seekBar_Radius"
android:onClick="closeFragment" <--- this i want to call in the fragment.
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:text="@string/button_ok" />
</RelativeLayout>
這裏是我的片段「一」活動的java文件:
public class SearchingRadiusFragment extends Fragment implements OnSeekBarChangeListener{
public static String username;
public void onAttach(Activity activity){
super.onAttach(activity);
}
public void onCeate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setUpLayout();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view= inflater.inflate(R.layout.fragment_radius_searching,container, false);
return view;
}
@SuppressLint("NewApi")
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Bundle bundle = this.getArguments();
if(bundle != null){
username = bundle.getString("username", null);
}
}
public void closeFragment(View v){
((UserProfileActivity)getActivity()).closeSearchingRadiusFragment();
}
}
在活動現在必要的方法「A」:
public void closeSearchingRadiusFragment(){
SearchingRadiusFragment frag = new SearchingRadiusFragment();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.setCustomAnimations(android.R.animator.fade_in,android.R.animator.fade_out);
transaction.remove(frag);
transaction.addToBackStack(null);
transaction.commit();
}
我在想什麼? 日食給了我一個Illegal.State.Expression。在活動「A」中找不到方法closeFragment()。即使我想使用片段「a」中的一個。
如果我更改方法buttonLeaveFragment調用的名稱:closeSearchingFragment 沒有任何反應,但應用程序也沒有崩潰。
您的設置是否爲新片段?如果是這樣你可以替換片段或添加爲一個子片段 – Libin
沒有我的設置在片段中。我想改變搜索欄,然後用「a」中的ok按鈕提交,並關閉「a」。 – Sakramento