Android 在一个片段上使用listview选定项在另一个片段上显示文本
我有两个片段,一个是listview,另一个是textview,我想当一个项目被选中时,它的文本用于在另一个片段的textview上设置文本并显示这个另一个片段 所以我在listview(lv)上设置了一个类似这样的监听器Android 在一个片段上使用listview选定项在另一个片段上显示文本,android,listview,android-fragments,android-listview,Android,Listview,Android Fragments,Android Listview,我有两个片段,一个是listview,另一个是textview,我想当一个项目被选中时,它的文本用于在另一个片段的textview上设置文本并显示这个另一个片段 所以我在listview(lv)上设置了一个类似这样的监听器 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v1,
int pos, long arg3) {
String hh = lv.getItemAtPosition(pos).toString().toLowerCase();
int resd = getResources().getIdentifier(hh, "raw", getPackageName());
InputStream isd = getResources().openRawResource(resd);
BufferedReader brd = new BufferedReader(new InputStreamReader(isd));
String lined;
String entireFiled = "";
try {
while((lined = brd.readLine()) != null) {
entireFiled += (lined + "\n");
}
}
catch (Exception e) {
Toast.makeText(getApplicationContext(),"Error reading file!",Toast.LENGTH_LONG).show();
e.printStackTrace();
}
TextView output1= (TextView) findViewById(R.id.fp);
output1.setText(entireFiled);
Family frag5 = new Family();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction().replace(R.id.fl, frag5).addToBackStack(null);
ft.commit();
}
});
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0,视图v1,
内部位置,长arg3){
字符串hh=lv.getItemAtPosition(pos.toString().toLowerCase();
int resd=getResources().getIdentifier(hh,“raw”,getPackageName());
InputStream isd=getResources().openRawResource(resd);
BufferedReader brd=新的BufferedReader(新的InputStreamReader(isd));
线纹;
字符串entireFiled=“”;
试一试{
而((lined=brd.readLine())!=null){
entireFiled+=(带下划线的+“\n”);
}
}
捕获(例外e){
Toast.makeText(getApplicationContext(),“读取文件时出错!”,Toast.LENGTH\u LONG.show();
e、 printStackTrace();
}
TextView输出1=(TextView)findViewById(R.id.fp);
output1.setText(entireFiled);
族frag5=新族();
FragmentManager fm=getSupportFragmentManager();
FragmentTransaction ft=fm.beginTransaction().replace(R.id.fl,frag5).addToBackStack(null);
ft.commit();
}
});
另一个片段称为Family,其文本视图为output1。当我运行它时,我在textview行得到null异常。那我该怎么做呢?谢谢您无法访问其他类似的片段文本视图。要将一个片段与另一个片段进行通信,请尝试使用
处理程序
或者,在您的情况下,您可以尝试使用共享首选项。单击按钮,将数据保存在第一个片段中。当出现族片段时,只需从共享首选项中检索数据,并将其显示在族片段的文本视图中。您需要使用setArgument
Family frag5 = new Family();
Bundle args = new Bundle();
args.putString("text", entireFiled);
frag5 .setArguments(args);
获取族片段OnCreateView方法中的值
TextView output1= (TextView) findViewById(R.id.fp);
String text = getArguments().getString("text", "");
output1.setText(text);
如何使用处理程序?我是新手检查一下我用了答案