2017-06-14 66 views
-1

我無法對使用片段中的函數的文本字段或任何對象進行更改。我該怎麼辦?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

回答

0

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不能轉換爲片段 –