【发布时间】:2016-08-18 10:06:00
【问题描述】:
我是 Android 的初学者,所以我一直坚持使用 Intent 方法。 我创建了三个 java 类,MainActivity 给 DetailActivity 一个意图,在 DetailActivity 中,textView 处理来自 MainActivity 的数据。 DetailActivity 给 TheAnswer 一个意图(它们都有片段)。问题是,当我单击 TheAnswer 左上角的 backwords 图标时。 DetailActivity 中的 textView 为空。 那么,当我从 TheAnswer 移回时,我应该怎么做才能确保 DetailActivity 中 textView 的内容得到很好的保存?
下面的内容是我写的代码。
MainActivityFragment
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
inputSearch = (EditText) rootView.findViewById(R.id.inputSearch);
ListView listView = (ListView) rootView.findViewById(R.id.list_questions);
listView.setAdapter(mQuest);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
String element = mQuest.getItem(position).substring(0,3);
int pointer = 0;
for(int i=0;i<3;i++)
pointer = pointer * 10 + (int)(element.charAt(i)-'0');
String data = "";
StringBuffer sbuffer = new StringBuffer();
InputStream is = getResources().openRawResource(
index[pointer-1]);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
if (is != null) {
try {
while ((data = reader.readLine()) != null) {
sbuffer.append(data + "\n");
}
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Intent intent = new Intent(getActivity(), DetailActivity.class)
.putExtra(Intent.EXTRA_TEXT,sbuffer.toString());
startActivity(intent);
}
});
DetailActivityFragment(我遇到问题的类)
公共类 DetailActivityFragment 扩展 Fragment{
private String forecastStr;
TextView text;
public DetailActivityFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
// The detail Activity called via intent. Inspect the intent for forecast data.
Intent intent = getActivity().getIntent();
if (intent != null && intent.hasExtra(Intent.EXTRA_TEXT)) {
forecastStr = intent.getStringExtra(Intent.EXTRA_TEXT);
text = (TextView) rootView.findViewById(R.id.detail_text);
text.setMovementMethod(new ScrollingMovementMethod());
text.setText(forecastStr);
}
Button mButton = (Button) rootView.findViewById(R.id.bottle);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// here you set what you want to do when user clicks your button,
// e.g. launch a new activity
Intent intent = new Intent(getActivity(), TheAnswer.class);
intent.putExtra(Intent.EXTRA_TEXT, forecastStr);
startActivity(intent);
}
});
return rootView;
}
}
终于,TheAnswerFragment
公共类 TheAnswerFragment 扩展片段 {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_the_answer, container, false);
Intent intent = getActivity().getIntent();
if (intent != null && intent.hasExtra(Intent.EXTRA_TEXT)) {
String message = intent.getStringExtra(Intent.EXTRA_TEXT);
ImageView image = (ImageView) rootView.findViewById(R.id.image);
image.setImageResource(R.drawable.aa);
}
return rootView;
}
}
【问题讨论】: