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时遇到问题,只要我可以在片段中完成。

+0

tv =(TextView)v.findViewById(R.id.TtT);在oncreate – Raj

+0

如何添加片段的活动只需调用onCreateView的update()方法 – Pavan

+0

是否将“Benimsayfam”片段附加到Activity的布局?我们可以看到更多关于MainActivity的代码吗? – rastadrian

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我们的片段。

+0

好吧,所以你使用的是一个查看寻呼机?我只写了所有这些,然后你更新,很好。 – rgv

+0

但它给出了一个错误:不兼容的类型:Benimsayfam不能转换为片段 –