我想在TextView
方法中更改onActivityResult
的文字。它似乎设置正确,但我无法在view
中看到它。
TextView
位于Fragment
的第三个ViewPager
。
所以这是我的代码:
public class TabsFacturasActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
//...
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
//...
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case FILE_SELECT_CODE:
if (resultCode == RESULT_OK) {
adjunto = true;
// Get the Uri of the selected file
Uri uri = data.getData();
// Get the path
String path = "";
try {
path = MyUtility.getPath(this, uri);
} catch (URISyntaxException e) {
myApplication.throwException(this);
e.printStackTrace();
}
String imgName = path.split("/")[path.split("/").length-1];
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.activity_lectura, null, false);
textViewImg = (TextView) view.findViewById(R.id.textViewUrlImgLectura);
System.out.println("text view before: "+textViewImg.getText()); //It returns correct value "..."
textViewImg.setText(imgName);
textViewImg.invalidate(); //It does nothing
System.out.println("text view after: "+textViewImg.getText()); //It returns correct value with image path
filePath = path;
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
private static class MyAdapter extends FragmentPagerAdapter {
private String[] titles = { "VER FACTURAS", "VER CONSUMO", "INTRODUCIR LECTURA" };
public MyAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: // Fragment # 0
return new FacturasActivity();
case 1: // Fragment # 1
return new ConsumoActivity();
case 2:// Fragment # 2
return new LecturaActivity(); //TextView is here
}
return null;
}
@Override
public int getCount() {
return titles.length;
}
}
}
正如您所看到的,我已尝试使用invalidate
,但它什么也没做。我该如何解决这个问题?
答案 0 :(得分:0)
尝试textViewImg.requestLayout();
答案 1 :(得分:0)
你的碎片可能有问题。可能有另一个文本视图在您可能已加载的另一个片段中具有相同的ID,并且正在设置文本。尝试打印textview id的值。
答案 2 :(得分:0)
我已经用这个答案解决了:https://stackoverflow.com/a/18487696/1088643
我在这里获得Fragment
的实例和访问方法:
LecturaActivity lecturaFragment = (LecturaActivity)
getSupportFragmentManager().findFragmentByTag(
"android:switcher:"+R.id.pager+":"+2);
lecturaFragment.changeImgText(imgName);