发送字符串数据从活动到片段
问题描述:
你好,我想发送一个字符串从活动(MainActivity.java)到片段(Tozihat.java)并设置为一个TextView,但它会给出错误。 我已查看其他主题,但找不到解决方案。发送字符串数据从活动到片段
代码数据库了Methode我写的id + 1,因为从ListView中的第一项位置为0,但第一个ID为1:从我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);
}
});
代码
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;
}
代码从我的片段(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;
}
请帮帮我!
答
添加以下代码列表视图itemClick在听者里面活动:
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;
}
显示您的logcat – SripadRaj
请告诉我你MainActivity代码?你为什么同时调用'startActivity'和''commit'?你能解释一下吗? – Sanoop
你的问题是你把片段放在活动中,同时开始新的活动。尚未在MainActivity中处理的Tozihat片段。这里是逻辑异常 –