将 Activity 中的字符串数据发送到片段

send string data from Activity to fragment

我想将字符串从 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);

        }
    });

代码来自我的片段 (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;

}

请帮帮我!

在 activity 中的 listview 项目点击侦听器中添加以下代码:

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