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