将字符串数据从Activity发送到片段[关闭]

Posted

技术标签:

【中文标题】将字符串数据从Activity发送到片段[关闭]【英文标题】:send string data from Activity to fragment [closed] 【发布时间】:2017-02-07 18:47:29 【问题描述】:

我想将一个字符串从 Activity (MainActivity.java) 发送到 Fragment (Tozihat.java) 并设置为 TextView 但它给出了错误。 我检查了其他主题,但找不到我的问题的解决方案。

来自数据库方法的代码我写了 id + 1,因为 listView 中的第一个项目位置是 0,但第一个 id 是 1:

    public String Tozihat(int id) 
    int id2 = id + 1;
    String query = "SELECT Tozihat FROM tbl_mive WHERE ID ="+id2;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(query , null);
    String t;
    cursor.moveToFirst();
    t = cursor.getString(0);

    return t;

来自我的 MainActivity.Java 的代码

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 


            Intent intent = new Intent(MainActivity.this , ClickActivity.class);

            String t = myDbHelper.Tozihat(position);
            Bundle bundle=new Bundle();
            Tozihat tozihat = new Tozihat();
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.textViewTozihat , tozihat, null);
            bundle.putString("Tozihat", t );
            tozihat.setArguments(bundle);
            fragmentTransaction.commit();

            startActivity(intent);

        
    );

来自我的 Faragment (Tozihat.java) 的代码

public class Tozihat extends Fragment

TextView textViewTozihat;
DataBaseHelper myDbHelper;
String Tozihat;

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);




@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    View view =  inflater.inflate(R.layout.fragment_tozihat, container, false);



    myDbHelper = new DataBaseHelper(getActivity());

    textViewTozihat = (TextView) view.findViewById(R.id.textViewTozihat);

    Tozihat = getArguments().getString("Tozihat");

    textViewTozihat.setText(Tozihat);

    return view;


请帮帮我!

【问题讨论】:

你的 MainActivity 代码是什么?你为什么同时打电话给startActivity和.commit??你能解释一下吗? 您的问题是您将片段放入活动中并同时开始新活动。 Tozihat 片段尚未在 MainActivity 中进行交易。这是逻辑异常 我从未使用过我不知道的片段。我删除了意图,但仍被强制停止 阅读this 【参考方案1】:

在活动中的listview itemclick listner中添加以下代码:

 Tozihat gTozihat  = new Tozihat().newInstance("Data");
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.textViewTozihat, gTozihat).commit();

在你的片段中:

 private static final String TYPE = "DATA_KEY";
public static  Tozihat newInstance(String type) 
         Tozihat fragment = new  Tozihat();
        Bundle args = new Bundle();
        args.putString(TYPE, type);

        fragment.setArguments(args);
        return fragment;
    

【讨论】:

出错了... 请检查修改后的代码 谢谢,但这是强制停止!!!

以上是关于将字符串数据从Activity发送到片段[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 Activity 发送到 Fragment

将数据从Activity发送到Fragment - 如何?

将活动回调发送到片段

在Android中将数据从活动发送到片段

如何将字符串数据从活动发送到片段?

如何将变量从 Activity 传递到 Fragment,并将其传回?