当前位置: 首页 > 知识库问答 >
问题:

关于意图倒退的问题

孟浩然
2023-03-14

我是Android的初学者,所以我一直坚持使用intent方法。我创建了三个java类,MainActivity提供了DetailActivity的意图,在DetailActivity中,textView处理来自MainActivity的数据。细节活动给出了答案的意图(所有答案都有片段)。问题是,当我点击答案左上角的backwords图标时。DetailActivity中的textView为空。那么,当我从回答中返回时,我应该做些什么来确保textView in Detail活动中的内容得到很好的保留呢?

下面的内容是我写的代码。

MainActivityFragment

视图rootView=充气机。充气(右布局、主容器、假);

    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(我遇到麻烦的类)

公有类DetailActivityFraack扩展了片段{

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;
}

}

最后,答案是碎片

公有类TheAnswerFraack扩展片段{

@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;
}

}

共有1个答案

胡永逸
2023-03-14

这一切都是关于存储和恢复实例状态。

看看这里的Android文档:

https://developer.android.com/training/basics/activity-lifecycle/recreating.html

如果你想让它更容易/更干净,你可以选择使用这个

https://github.com/frankiesardo/icepick

p、 这里需要注意的是,请确保查看静态片段createInstance()模式,以便将创建参数存储在附加到片段参数的包中。

 类似资料:
  • 问题内容: 常量INADDR_ANY是所谓的IPv4通配符地址。通配符IP地址对于在多宿主主机上绑定Internet域套接字的应用程序很有用。如果多宿主主机上的应用程序将套接字仅绑定到其主机的IP地址之一,则该套接字只能接收发送到该IP地址的UDP数据报或TCP连接请求。但是,我们通常希望多宿主主机上的应用程序能够接收指定主机IP地址的数据报或连接请求,并将套接字绑定到通配符IP地址可以实现这一点

  • 有时我们会遇到几个关于Autoconf的问题。下面是被提及的一些问题。 发布configure脚本 对发行由Autoconf生成的configure有什么限制?它们是如何影响我那些使用它们的程序的? 关于由Autoconf生成的配置脚本是如何发行和如何被使用的,并没有限制。在Autoconf第1版中,它们是服从GNU通用公共许可证的。 我们仍然鼓励软件的作者按照诸如GPL的条款发行他们的作品,但A

  • 一、环境 1、Hadoop 0.20.2 2、Hive 0.5.0 3、JDK 1.6 4、操作系统:Linux m131 2.6.9-78.8AXS2smp #1 SMP Tue Dec 16 02:42:55 EST 2008 x86_64 x86_64 x86_64 GNU/Linux 二、注意事项 1、关于数字类型支持的位数 类型 支持数字位数 tinyint 3位数字 smallint

  • 我目前正在努力加深对CMake的理解。我试着用http://libqglviewer.com/introduction.html]LibQGLViewer是我的一个C项目中的第三方库。 相关子目录中的CMakeLists.txt看起来像下面的部分,我有问题是add_libary部分,为了清晰起见,省略了一些头文件和源文件 我的应用程序运行,一切都很好。 但是,我读到,应该只包含ADDILL库的源文

  • 问题内容: 我想查询在以下情况下flush方法的实际作用: 这是否意味着在迭代20之后,将刷新高速缓存,然后将这20个保留的内存对象实际保存在数据库中? 有人可以告诉我当条件为真时会发生什么。 问题答案: 来自的javadoc : 强制刷新该会话。必须在提交事务并关闭会话之前在工作单元的末尾调用(取决于 flush- mode ,Transaction.commit() 调用此方法)。 刷新 是将

  • 过去几天我一直在使用java,最近几天我收到了一个问题表单。当我试图在servlet中创建一个类时,包部分显示以下错误"** > 无法解析ObjectInputStreamjava.io.类型。它是从必需的. class文件间接引用的 当我试着评论出 导入javax.servlet.http.HttpServlet; **"部分的错误是去,但我不能扩展的http的servlet类。 此图像显示错误