我徒劳地试图从FormActivity中获取一个值并使用它来填充片段中的EditText。我必须等待活动从远程服务器检索值并用它填充本地SQLite表,这意味着我在片段中尝试过的解决方案没有工作(因为早期没有填充空错误,所以出现空错误)。 我需要帮助。
FormActivity.java的相关部分
public void DrawText() {
// Fetching user details from sqlite
HashMap<String, String> user = db.getUserDetails();
if (user.size() != 0) {
Log.e(TAG, "string surname: " + surname);
// Displaying the user details on the fragment
FirstFragment f1 = new FirstFragment();
//put info into a bundle to pass to fragments
Bundle drawbundle = new Bundle();
drawbundle.putString("surname", surname);
f1.setArguments(drawbundle);
FragmentManager FM = getSupportFragmentManager();
FragmentTransaction FT = FM.beginTransaction();
FT.add(R.id.something, f1);
FT.commit();
}else{
Log.e(TAG, "table was empty");
}
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case 0: return FirstFragment.newInstance("@string/form_instruct");
case 1: return SecondFragment.newInstance("SecondFragment, Instance 1");
case 2: return ThirdFragment.newInstance("ThirdFragment, Instance 1");
case 3: return FourthFragment.newInstance("FourthFragment, Instance 1");
//case 4: return FifthFragment.newInstance("ThirdFragment, Instance 3");
default: return FirstFragment.newInstance("FirstFragment, Default");
}
}
显然,id.something不正确,我不知道如何获取id。我读过我可以使用标签,但我的尝试不起作用。我尝试了以下方法:
FirstFragment fragA = (FirstFragment) getSupportFragmentManager().findFragmentByTag("fragA");
这是我的FirstFragment.java
public class FirstFragment extends android.support.v4.app.Fragment {
//create variables & Logcat tag
private static final String TAG = FirstFragment.class.getSimpleName();
private EditText inputTitle;
private EditText inputName;
private EditText inputSurname;
//private SQLiteHandler db;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_first, container, false);
TextView tv = (TextView) v.findViewById(R.id.tvFragFirst);
tv.setText(getArguments().getString("msg"));
inputSurname = (EditText) getActivity().findViewById(R.id.surnameText);
inputSurname.setText(getArguments().getString("surname"));
return v;
}
public static FirstFragment newInstance(String text) {
FirstFragment f = new FirstFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
}
我带着这个圈子走了一圈,有人可以帮忙吗?
答案 0 :(得分:1)
如果您使用的是onChange
,则可以使用TextView
在桌面填满时收到通知,并且在调用ContentProvider
时,您可以更新LocalBroadcastManger
}。如果您没有使用BroadcastReceiver
,则您可以使用for($i=0; $i<sizeof($allTags); $i++) {
if($allTags[$i]!='') {
$qa_content['custom'.++$c] = '<article>// <div class="custom.."
<header><a href="tag/'.urlencode($allTags[$i]).'"><h2>'.$allTags[$i].'</h2></a></header>
<div>'.$SameTagsCount[$allTags[$i]].'</div>
</article>';
}
和$allTags
来实现相同的目标
答案 1 :(得分:1)
在片段创建访问您的活动后创建界面实现您的片段并在活动中保存您的界面参考,您的操作将使用保存的界面参考完成从活动访问您的方法并更新您的片段。 第二个选项使用标记添加您的片段并使用此片段管理器按标记查找您的片段而不是您的片段参考,而不是简单地在您的活动中调用您的方法