我怎樣才能從一個片段中呼叫或呼叫常規活動類方法。 我試著從下面的片段中呼叫注冊類方法 activityFunction,但它回傳空指標例外。下面是整個片段類,如果有任何幫助,我將不勝感激。我在谷歌上搜索,有人提到我必須手動將片段分配給活動,然后呼叫方法,但我有點找不到方法。 如果有任何幫助,我將非常感激。下面的代碼中,我試圖在點擊一個按鈕時從片段中呼叫活動方法。
Registration media = new Registration(); media.activityFunction();
public class fragment_login extends Fragment {
private static final String ARG_PARAM1 = "param1"。
private static final String ARG_PARAM2 = "param2"。
// TODO:重命名和改變引數的型別。
private String mParam1;
private String mParam2;
public fragment_login() {
//要求空公共建構式。
}
public static fragment_login newInstance(String param1, String param2) {
fragment_login fragment = new fragment_login() 。
Bundle args = new Bundle() 。
args.putString(ARG_PARAM1, param1)。
args.putString(ARG_PARAM2, param2)。
fragment.setArguments(args)。
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//為這個片段充實布局。
View v = inflater.inflate(R.layout.fragment_login, container, false)。
login = v.findViewById(R.id.et_email);
password = v.findViewById(R.id.et_password);
send = v.findViewById(R.id.btn_login);
return v。
}
// thats where I am trying to call clas method from fragment .
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
send.setOnClickListener(new View.OnClickListener() {
Registration media = new Registration()。
media.activityFunction()。
}
});
}
uj5u.com熱心網友回復:
你可以使用本地廣播接收器將事件從片段發送到活動,并做你想從片段做的作業。例如
Fragment.java
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(text);
Intent localIntent = new Intent("CUSTOM_ACTION") 。
intent.putExtra("key"/span>, "value"/span>)。
localBroadcastManager.sendBroadcast(localIntent)。
Activity.java
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive( Context context, Intent intent ) {
String data = intent.getStringExtra("key")。
Log.d( "Received data : ", data);
}
};
在onResume()中注冊活動中的廣播接收器,在onStop()中取消注冊。
使用以下代碼進行注冊
IntentFilter filter = new IntentFilter("CUSTOM_ACTION") 。
registerReceiver(receiver, filter)。
使用下面的代碼取消注冊:
localBroadcastManager.unregisterReceiver(receiver)。
注意:在發送廣播時,不要忘記使用宣告的相同動作。
uj5u.com熱心網友回復:
你可以像這樣呼叫活動方法,如果片段被加載到該活動中
((MainActivity)getActivity()).abcMethod()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/330161.html
標籤:
