タブでスワイプビューを作成しました。タブを使ってビューをスワイプしてすべてのフレーズを同時にロードする
問題は、アクティビティが作成されたときに3つのフラグメントが同時にロードされることです。アクティビティが開かれたときにデフォルトのフラグメントを開始するように設定しました。他のフラグメントは、サーバからのデータをダウンロードしていません。誰かがこのフラグメントにスワイプします。
これは私の活動ですが、解決策には関係ないと思うので、私は3つの断片のコードを入れませんが、必要ならば教えてください。
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import java.util.ArrayList;
import java.util.List;
public class Information extends AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
String id;
String idUser;
Complejo complejo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_icon_text_tabs);
recogerParametro();
setTitle(complejo.getName());
viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setOffscreenPageLimit(2);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_informacion_complejo, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.btn_llamarBarra:
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + complejo.getTelefono().toString()));
startActivity(callIntent);
} catch (ActivityNotFoundException activityException) {
Log.e("Llamando..", "Falló la llamada", activityException);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new GaleriaComplejoFragment(), "GALERÍA");
adapter.addFrag(new InformacionComplejoFragment(), "INFORMACIÓN");
adapter.addFrag(new ComentariosComplejoFragment(), "COMENTARIOS");
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(1, false);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFrag(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
private void recogerParametro() {
id= getIntent().getStringExtra("id");
idUser = getIntent().getStringExtra("idUser");
complejo = (Complejo) getIntent().getSerializableExtra("complejo");
}
}
ありがとうございました!
ViewPager機能:デフォルトの1に左の断片、第三:それは第一第二デフォルト1、、一度に3フラグメントをロードし、デフォルトに右フラグメント1 –
私はそれを知っているが、どのように私は変更することができますコード? –
データがロードされていない場合は、新しいデータのみがロードされ、それ以外の場合はすでにロードされているデータが表示されるという条件付きで、フラグメントをonresumeにコードを入れます。 onresumeは何度も呼び出されるからです。 – androidnoobdev