将字符串数据从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发送到片段[关闭]的主要内容,如果未能解决你的问题,请参考以下文章