如何在Android Studio中将数据从一种布局发送到另一种片段

纳粹

我想将数据从MainActivity发送到另一个片段,并且尝试了Bundle方法,但是当我发送数据时,我的应用程序崩溃了,因为我是Android编程的新手,所以找不到错误。下面是我的代码Main Activity.java

package com.example.practice;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView text1, text2;
    Button btnSend;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentManager manager = getSupportFragmentManager();
        final FragmentTransaction t = manager.beginTransaction();
        final FirstFragment f = new FirstFragment();

        text1 = findViewById(R.id.tv1);
        text2 = findViewById(R.id.tv2);

        btnSend = findViewById(R.id.button);
        btnSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String txt1 = text1.getText().toString();
                String txt2 = text2.getText().toString();

                FirstFragment F_frag = new FirstFragment();

                Bundle bundle = new Bundle();
                bundle.putString("String1", txt1);
                bundle.putString("String2", txt2);
                f.setArguments(bundle);
                t.add(R.id.frame_layout, f);
                t.commit();


            }
        });


    }
}

而我的FirstFragment.java代码是

package com.example.practice;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


public class FirstFragment extends Fragment {

    TextView t1, t2;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v =  inflater.inflate(R.layout.fragment_first, container, false);

       t1 = v.findViewById(R.id.tv1);
       t2 = v.findViewById(R.id.tv2);
       Bundle b1 = getArguments();
       String name = b1.getString("String1");
       String text = b1.getString("String2");
       t1.setText(name);
       t2.setText(text);


        return v;
    }
}

我的应用程序崩溃了,请告诉我我的问题在哪里,请提前致谢

Arjun Saini:

您需要尝试使用调用片段实例

您可以发送捆绑商品,价值或模型

您的活动

    import androidx.appcompat.app.AppCompatActivity;
    import androidx.fragment.app.FragmentManager;
    import androidx.fragment.app.FragmentTransaction;

    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity {

        TextView text1, text2;
        Button btnSend;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            FragmentManager manager = getSupportFragmentManager();
            final FragmentTransaction t = manager.beginTransaction();
           

            text1 = findViewById(R.id.tv1);
            text2 = findViewById(R.id.tv2);

            btnSend = findViewById(R.id.button);
            btnSend.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String txt1 = text1.getText().toString();
                    String txt2 = text2.getText().toString();

                  getSupportFragmentManager().beginTransaction().add(R.id.container, FirstFragment.newInstance(txt1,txt2),"FirstFragment").commit();


                }
            });


        }
    }

需要在片段类上调用片段实例

        package com.example.practice;

    import android.os.Bundle;

    import androidx.fragment.app.Fragment;

    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;


    public static FirstFragment newInstance(String param1, String param2) {
    FirstFragment fragment = new FirstFragment();
    Bundle args = new Bundle();
    args.putString("value1", param1);
    args.putString("value2", param2);
    fragment.setArguments(args);
    return fragment;
}


    public class FirstFragment extends Fragment {

        TextView t1, t2;
        String mParam1="",mParam2="";

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View v =  inflater.inflate(R.layout.fragment_first, container, false);

           t1 = v.findViewById(R.id.tv1);
           t2 = v.findViewById(R.id.tv2);
           Bundle b1 = getArguments();

           if (b1!= null) {
        mParam1 = getArguments().getString("value1");
        mParam2 = getArguments().getString("value2");
     }


           String name = mParam1;
           String text = mParam2;
           t1.setText(name);
           t2.setText(text);


            return v;
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中将对象从一种类型复制到另一种类型?

如何使用脚本将列从一种数据类型更改为另一种

我如何将信息从一种形式发送到另一种形式

如何在Android中将一种跨度类型更改为另一种?

如何在Node.js中将数据从一种方法传输到另一种方法?

从一种活动切换到另一种活动后如何发送数据?

如何在Visual Studio代码中将一种文件类型与另一种文件类型关联?

如何将AES模式从一种迁移到另一种?

将数据从一种测量复制到另一种时,如何插入当前时间?

如何将数据从一个视图发送到另一个视图,它是品牌,模型等。这不是一种形式

如何在同一活动中将变量从一种方法传递到另一种方法

Dart,如何从一种迭代转换为另一种?

如何将数据从一种形式放入另一种形式的列表框中

在Android中将一种布局滑动到另一种布局上

如何在Visual Studio 2013中将Web参考从一种解决方案复制到另一种解决方案

如何将日期从列表框发送到另一种形式的文本框

Android:从一种布局活动切换到另一种

Laravel如何在同一控制器中将发布数据从一种发布方法传递到另一种发布方法?

如何执行从一种形式到另一种形式的更新查询

如何在露天活动工作流程中将值从一种形式传递到另一种形式?

如何减少从一种形式到另一种形式的加载时间

如何在 Ada 中将类型从一种更改为另一种?

如何在java中将Int从一种方法返回到另一种方法

如何在c#中将数据从一种形式传输到另一种形式?

如何自动将数据从一种表格输入到另一种表格 yii2

如何在scrapy中将信息从一种方法传递到另一种方法

你如何在android studio中将数据从一种方法传递到另一种方法

如何将数据从一种模式转换为另一种模式?

如何在Javascript中将数组从一种模式转换为另一种模式?