从Mainactivity获取文本视图数据以进行分段



我想获取Textview信息来分割Textview。

主要活动:

public final DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String format = new SimpleDateFormat("dd/MM/yyyy").format(c.getTime());
datePicker1.setText(format);
Tab1_fragment.getInstance().setText(Integer.toString(difference(c.getTimeInMillis())));

}
};

片段

public class Tab1_fragment extends Fragment {
TextView betweendate;
public void setText (String text){
TextView betweendate = (TextView) this.getView().findViewById(R.id.betweenDate);
betweendate.setText(text);
}

我做得对吗?日志中的结果是:

尝试调用虚拟方法android.view.view在空对象引用上的android.view.view.findViewById(int('

您首先在onCreateView中定义所有视图(textview和…((在片段中(这里的初始视图是示例:

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_compare_result, container, false);
initView(view);
return view;

}
private void initView(View view) {
txtProductName = view.findViewById(R.id.txt_product_name);
txtProductc = view.findViewById(R.id.txt_product_c);
txtProductn = view.findViewById(R.id.txt_product_n);
}

要将活动中的数据发送到片段,可以使用挛缩片段获取数据或Intent

初学者的简单实现如下:

您可以从片段访问活动数据:

Activity:
public class YourActivity extends Activity {
private String myString = "hello";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
...
}
public String getDataLocal() {
return myString;
}
}
Fragment:
public class MyFragment extends Fragment {
TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {=
View view = inflater.inflate(R.layout.frgament_layout_view, container, false);
tv = (TextView) view.findViewById(R.id.yout_text_view);

return view;
}
@Override
public View onViewCreated(..) {
YourActivity activity = (YourActivity) getActivity();
String myActivityData = activity.getDataLocal();
tv.setText(myActivityData);

return view;
}
}

希望这能让您了解如何将数据从"活动"发送到片段。


第二个解决方案:来自YourActivity

var fragment = supportFragmentManager.findFragmentById(YOUR_FRAG_ID) as MyFragment
fragment.updateMyData(YOUR_NEW_DATA);

尝试第二种解决方案,它应该有效。:(

看起来你需要使用Bundle,假设我的Fragment调用ResultFragment例如,我想通过一个约会。

String date = "10/12/2000";
Bundle bundle = new Bundle();
bundle.putString("date", date);
ResultFragment resultFragment = new ResultFragment();
resultFragment.setArguments(bundle);
resultFragment.show(this.getSupportFragmentManager(), "result fragment");

要获取片段中的数据,请使用以下代码。

Bundle bundle = this.getArguments();

if (bundle != null) {
String date = bundle.getString("date", null);
}

最新更新