Android - SetText中的片段不起作用
我无法对使用片段中的函数的文本字段或任何对象进行更改。我该怎么办?Android - SetText中的片段不起作用
片段:
public class Benimsayfam extends Fragment{
TextView tv;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.benimsayfam,container,false);
tv = (TextView) v.findViewById(R.id.TtT);
return v;
}
public void update(){
tv.setText("Updated");
}
}
MainActivity:
public class MainActivity extends AppCompatActivity implements HttpRequest.AsyncResponse {
private ViewPager mViewPager;
SectionsPageAdapter mSectionPageAdapter;
BanaYazilanAdapter banaYazilanAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mainactivity);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
mSectionPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.container);
setupViewPager(mViewPager);
TabLayout tablayout = (TabLayout) findViewById(R.id.tabs);
tablayout.setupWithViewPager(mViewPager);
}
public void setupViewPager(ViewPager viewPager){
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new Benimsayfam(),"Benim Sayfam");
adapter.addFragment(new Arges(),"Arges");
adapter.addFragment(new Bersd(),"Bersd");
viewPager.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_s, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void processFinish(JSONObject object) throws JSONException {
Benimsayfam b = new Benimsayfam();
b.update();
}
}
我使用选项卡菜单。我需要在Tab转换期间在MainActivity中使用一个函数。我在使用AsyncResponse时遇到问题,只要我可以在片段中完成。
onCreateView()
只有在片段事务发生后才调用片段。
您刚刚创建了一个片段的对象,并且调用了update() 如果我没有错,这应该会导致空指针异常。
你需要做的是在你的Activity
中,在片段上创建片段和performa事务的实例,以便显示片段。
这里是你需要的东西:
public class YourActivty extends Activity {
public void onCreate(Bundle SavedInstanceState) {
Benimsayfam fam = Benimsayfam.newInstance();
getFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container,
fam,
Benimsayfam.TAG)
.commit();
fam.update();
}
}
public class Benimsayfam extends Fragment {
public static final String TAG = "Benimsayfam";
public static Benimsayfam newInstance() {
return new Benimsayfam();
}
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.benimsayfam,container,false);
tv = (TextView) v.findViewById(R.id.TtT);
return v;
}
public void update(){
tv.setText("Updated");
}
}
在你activity.xml,你需要的帧结构与ID R.id.fragment_container
这是我们将infate我们的片段。
好吧,所以你使用的是一个查看寻呼机?我只写了所有这些,然后你更新,很好。 – rgv
但它给出了一个错误:不兼容的类型:Benimsayfam不能转换为片段 –
tv =(TextView)v.findViewById(R.id.TtT);在oncreate – Raj
如何添加片段的活动只需调用onCreateView的update()方法 – Pavan
是否将“Benimsayfam”片段附加到Activity的布局?我们可以看到更多关于MainActivity的代码吗? – rastadrian