gpt4 book ai didi

当我点击第三次时,Android TabActivity 调用 onDestroyView

转载 作者:搜寻专家 更新时间:2023-11-01 07:54:57 26 4
gpt4 key购买 nike

我的应用程序有 2 个选项卡,运行起来非常棒。
但是今天我试图扩展我的标签栏并添加了第三个标签。

当我点击第三个选项卡时,它会破坏第一个选项卡 fragment ,并在第一个选项卡 fragment 中调用 onDestroyView 方法。
当我点击第二个选项卡时,它不会调用 onDestroyView。

为什么第三个选项卡会破坏第一个选项卡?

我不希望它破坏我的第一印象。
我该如何解决这个问题?

我的自定义 FragmentAdapter 类

package com.esmobileinc.vetmapp;

import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;

public class SectionsPagerAdapter extends FragmentPagerAdapter {

Context mContext;
private Fragment mCurrentFragment;


public SectionsPagerAdapter(Context context, FragmentManager fm) {
super(fm);
mContext = context;
}

@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.

switch (position){
case 0:
return new HaritaFragment();
case 1:
return new ListeFragment();
case 2:
return new ListeFragment();
}
return null;
}

public Fragment getCurrentFragment() {
return mCurrentFragment;
}
//...
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
if (getCurrentFragment() != object) {
mCurrentFragment = ((Fragment) object);
}
super.setPrimaryItem(container, position, object);
}


@Override
public int getCount() {
return 3;
}

/*@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();

switch (position) {
case 0:
return mContext.getString(R.string.title_section1).toUpperCase(l);
case 1:
return mContext.getString(R.string.title_section2).toUpperCase(l);
}
return null;
}*/

public int getIcon(int position){

switch (position){

case 0:
return R.drawable.harita_tab_icon;
case 1:
return R.drawable.liste_tab_icon;
case 2:
return R.drawable.harita_tab_icon;
}
return R.drawable.harita_tab_icon;
}
}

这是我的主要 Activity 。

package com.esmobileinc.vetmapp;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

import com.instabug.library.Instabug;
import com.instabug.wrapper.support.activity.InstabugActionBarActivity;


public class MainActivity extends InstabugActionBarActivity implements ActionBar.TabListener {

SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
FragmentManager manager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

manager = getSupportFragmentManager();

// Set up the action bar.
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.nav_logo);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setTitle("");

mSectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());

mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});

for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(
actionBar.newTab()
//.setText(mSectionsPagerAdapter.getPageTitle(i))
.setIcon(mSectionsPagerAdapter.getIcon(i))
.setTabListener(this));
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_mail) {

Instabug.getInstance().setCommentFieldHint(getString(R.string.veterinerbildir_comment));
Instabug.getInstance().enableEmailField(true,true);
Instabug.getInstance().setCommentRequired(true);

Instabug.getInstance().invokeFeedbackProcess(Instabug.INSTABUG_FEEDBACK_FEEDBACK);

return true;
}

else if (id == R.id.action_about){

Intent intent = new Intent(this,InfoActivity.class);
startActivity(intent);
}

return super.onOptionsItemSelected(item);
}

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
}

这是我的第一个标签 fragment 。

package com.esmobileinc.vetmapp;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.instabug.library.Instabug;
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class HaritaFragment extends Fragment implements LocationListener {

private static GoogleMap mGoogleMap;
public static HashMap<Marker, Markers> mMarkersHashMap = new HashMap<Marker, Markers>();
private ArrayList<Markers> mMyMarkersArray = new ArrayList<Markers>();
private Map<Marker, Markers> allMarkersMap = new HashMap<Marker, Markers>();

private Location userLocation;

private LatLng latLng;
private Double lat;
private Double lng;

private static View view;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.fragment_harita, container, false);

}

public void onViewCreated(View view, Bundle savedInstanceState){
setupMap();
//showGPSDisableAlert();
}

@Override
public void onResume() {
super.onResume();

googleAnalyticsSendScreen();

// Getting Google Play availability status
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity().getBaseContext());

if (status != ConnectionResult.SUCCESS) { // Google Play Services are not available

int requestCode = 10;
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, getActivity(), requestCode);
dialog.show();

} else { // Google Play Services are available

getAllDataFromParse();
}
}

public void onDestroyView()
{
super.onDestroyView();
Fragment fragment = (getChildFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}

private void showGPSDisableAlert(){

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.location_error_title);
builder.setMessage(R.string.location_error_message);
builder.setPositiveButton(android.R.string.ok, null);

AlertDialog dialog = builder.create();
dialog.show();
}

private void getLocations(){

mGoogleMap.getUiSettings().setMapToolbarEnabled(false);
userLocation = mGoogleMap.getMyLocation();

if (userLocation != null) {
onLocationChanged(userLocation);
latLng = new LatLng(lat,lng);
mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15));
}

else {
showGPSDisableAlert();
latLng = new LatLng(39.19820535, 34.89257812);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 5));
}
}
private void getAllDataFromParse(){

if (mMyMarkersArray.isEmpty()){

if (isInternetAvailable()){
unPinAllParseData();
getOnlineDataFromParse();
}
else{
getOfflineDataFromParse();
}
}
}
private void unPinAllParseData(){

ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.setLimit(1000);
ParseObject.unpinAllInBackground();
}
private void getOnlineDataFromParse(){

ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.setLimit(1000);
query.whereEqualTo("isMember", "YES");
query.findInBackground(new FindCallback<ParseObject>() {

public void done(List<ParseObject> vetList, ParseException e) {
if (e == null) {

for(int i=0; i< vetList.size(); i++){

mMyMarkersArray.add(new Markers(

vetList.get(i).getString("adi"),
vetList.get(i).getString("adres"),
vetList.get(i).getString("telefon"),
vetList.get(i).getString("web"),
vetList.get(i).getString("face"),
vetList.get(i).getString("geceAcik"),
vetList.get(i).getDouble("latitude"),
vetList.get(i).getDouble("longitude")));
}

getLocations();
plotMarkers(mMyMarkersArray);
ParseObject.pinAllInBackground(vetList);


} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.parse_online_query_error_title));
builder.setMessage(getString(R.string.parse_online_query_error_message));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
private void getOfflineDataFromParse(){

ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.setLimit(1000);
query.whereEqualTo("isMember", "YES");
query.fromLocalDatastore();
query.findInBackground(new FindCallback<ParseObject>() {

public void done(List<ParseObject> vetList, ParseException e) {
if (e == null) {
getLocations();

for(int i=0; i< vetList.size(); i++){

mMyMarkersArray.add(new Markers(

vetList.get(i).getString("adi"),
vetList.get(i).getString("adres"),
vetList.get(i).getString("telefon"),
vetList.get(i).getString("web"),
vetList.get(i).getString("face"),
vetList.get(i).getString("geceAcik"),
vetList.get(i).getDouble("latitude"),
vetList.get(i).getDouble("longitude")));
}

plotMarkers(mMyMarkersArray);

} else {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.parse_offline_query_error_title));
builder.setMessage(getString(R.string.parse_offline_query_error_title));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
private void googleAnalyticsSendScreen() {

Tracker t = ((GlobalState) getActivity().getApplication()).getTracker(
GlobalState.TrackerName.APP_TRACKER);
t.setScreenName("Harita Ekranı");
t.send(new HitBuilders.AppViewBuilder().build());
}
private void plotMarkers(ArrayList<Markers> markers){
if(markers.size() > 0)
{
for (Markers myMarker : markers)
{
// Create user marker with custom icon and other options
MarkerOptions markerOption = new MarkerOptions().position(new LatLng(myMarker.getmLatitude(), myMarker.getmLongtitude()));

if (myMarker.getmGeceAcik().equalsIgnoreCase("YES")){

markerOption.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
}

else if (myMarker.getmGeceAcik().equalsIgnoreCase("Cep")){

markerOption.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
}

else if (myMarker.getmGeceAcik().equalsIgnoreCase("Barinak")){

markerOption.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET));
}


final Marker currentMarker = mGoogleMap.addMarker(markerOption);
mMarkersHashMap.put(currentMarker, myMarker);
allMarkersMap.put(currentMarker, myMarker);

mGoogleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {

Markers selectedMarkerInfo = allMarkersMap.get(marker);

View v = View.inflate(getActivity().getBaseContext(),R.layout.info_window,null);

TextView tvAdi = (TextView) v.findViewById(R.id.tv_adi);
TextView tvAdres = (TextView) v.findViewById(R.id.tv_adres);
ImageView img = (ImageView) v.findViewById(R.id.img_icon);

tvAdi.setText(selectedMarkerInfo.getmAdi());
tvAdres.setText(selectedMarkerInfo.getmAdres());
tvAdi.setSelected(true);

if (selectedMarkerInfo.mGeceAcik.equalsIgnoreCase("Barinak")){

img.setImageResource(R.drawable.belediye);
}

else if (selectedMarkerInfo.mGeceAcik.equalsIgnoreCase("YES")){

img.setImageResource(R.drawable.gece_acik);
}

else if (selectedMarkerInfo.mGeceAcik.equalsIgnoreCase("Cep")){

img.setImageResource(R.drawable.acil);
}

else{
img.setImageResource(R.drawable.normal);
}
return v;
}

@Override
public View getInfoContents(Marker marker) {

return null;
}
});
}
}
}
private void setupMap(){

mGoogleMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)).getMap();
mGoogleMap.setMyLocationEnabled(true);

latLng = new LatLng(39.19820535, 34.89257812);
//latLng = new LatLng(41.048846, 29.027924);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 5));

//OnClick Info Window Listener...
mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {

Markers selectedMarkerInfo = allMarkersMap.get(marker);

//GOOGLE ANALYTICS EVENT SENDER
String secilenVeteriner = selectedMarkerInfo.getmAdi();
Tracker t = ((GlobalState) getActivity().getApplication()).getTracker(
GlobalState.TrackerName.APP_TRACKER);

t.send(new HitBuilders.EventBuilder()
.setCategory(secilenVeteriner)
.setAction("Harita ekranın'dan seçilme sayınız")
.setLabel("Harita")
.build());

Intent intent = new Intent(getActivity(), DetailActivity.class);

intent.putExtra("adi", selectedMarkerInfo.getmAdi());
intent.putExtra("adres", selectedMarkerInfo.getmAdres());
intent.putExtra("web", selectedMarkerInfo.getmWeb());
intent.putExtra("face", selectedMarkerInfo.getmFace());
intent.putExtra("tel", selectedMarkerInfo.getmTelefon());
intent.putExtra("lat", selectedMarkerInfo.getmLatitude().toString());
intent.putExtra("lng", selectedMarkerInfo.getmLongtitude().toString());
intent.putExtra("gece", selectedMarkerInfo.getmGeceAcik());

startActivity(intent);
}
});

}
private boolean isInternetAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
@Override
public void onLocationChanged(Location location) {
lat = (location.getLatitude());
lng = (location.getLongitude());
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_mail) {

Instabug.getInstance().setCommentFieldHint(getString(R.string.veterinerbildir_comment));
Instabug.getInstance().enableEmailField(true,true);
Instabug.getInstance().setCommentRequired(true);

Instabug.getInstance().invokeFeedbackProcess(Instabug.INSTABUG_FEEDBACK_FEEDBACK);

return true;
}

if (id == R.id.map_standart){

mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

}

if (id == R.id.map_hibrit){

mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
}

if (id == R.id.map_uydu){

mGoogleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
}

return super.onOptionsItemSelected(item);
}
}

这是我的第二个标签 fragment 类,第三个标签 fragment 是一样的。

    package com.esmobileinc.vetmapp;


import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;

import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;

public class ListeFragment extends ListFragment {

private View mView;

private ArrayList<String> illerArray = new ArrayList<String>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

mView = inflater.inflate(R.layout.fragment_liste, container, false);

return mView;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

getAllDataFromParse();
}


@Override
public void onResume() {
super.onResume();

googleAnalyticsSendScreen();

}

private void getAllDataFromParse(){

if (illerArray.isEmpty()){

if (isInternetAvailable()){
getOnlineDataFromParse();
}
else{
getOfflineDataFromParse();
}
}
}


private boolean isInternetAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) this.getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

private void getOnlineDataFromParse(){

ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.setLimit(1000);
query.whereEqualTo("isMember", "YES");
query.findInBackground(new FindCallback<ParseObject>() {

public void done(List<ParseObject> vetList, ParseException e) {
if (e == null) {

for(int i=0; i< vetList.size(); i++){

illerArray.add(vetList.get(i).getString("il"));
}

illerArray = new ArrayList<String>(new LinkedHashSet<String>(illerArray));

Collections.sort(illerArray, new orderComparator());
showListView();
registerCallBack();

} else {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.parse_online_query_error_title));
builder.setMessage(getString(R.string.parse_online_query_error_message));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}

});
}

private void getOfflineDataFromParse(){

ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.fromLocalDatastore();
query.setLimit(1000);
query.whereEqualTo("isMember", "YES");
query.findInBackground(new FindCallback<ParseObject>() {

public void done(List<ParseObject> vetList, ParseException e) {
if (e == null) {

for(int i=0; i< vetList.size(); i++){

illerArray.add(vetList.get(i).getString("il"));
}

illerArray = new ArrayList<String>(new LinkedHashSet<String>(illerArray));

Collections.sort(illerArray, new orderComparator());
showListView();
registerCallBack();

} else {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.parse_online_query_error_title));
builder.setMessage(getString(R.string.parse_online_query_error_message));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}

});
}

private void showListView() {

ArrayAdapter<String> adapter = new myListAdapter();
ListView listView = (ListView) getActivity().findViewById(android.R.id.list);
listView.setAdapter(adapter);
}

private void registerCallBack() {

ListView listView = (ListView) getActivity().findViewById(android.R.id.list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

String secilenIl = illerArray.get(position);

//GOOGLE EVENT SEND
Tracker t = ((GlobalState) getActivity().getApplication()).getTracker(
GlobalState.TrackerName.APP_TRACKER);

t.send(new HitBuilders.EventBuilder()
.setCategory("İller Listesi")
.setAction("Seçilen il")
.setLabel(secilenIl)
.build());

//INTENTING DETAIL VIEW CONTROLLER !!!!
Intent intent = new Intent(getActivity(),IlcelerActivity.class);

intent.putExtra("secilenIl",secilenIl);

startActivity(intent);

}
});
}

private class myListAdapter extends ArrayAdapter<String>{

public myListAdapter(){

super(getActivity(), R.layout.ilce_view, illerArray);

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

View itemView = convertView;

if (itemView == null){

itemView = getActivity().getLayoutInflater().inflate(R.layout.ilce_view, parent, false);
}

String il = illerArray.get(position);

TextView ilce = (TextView) itemView.findViewById(android.R.id.text1);
ilce.setText(il);

return itemView;
}
}

public class orderComparator implements Comparator<String> {

@Override
public int compare(String il1, String il2) {
Collator collator = Collator.getInstance(Locale.getDefault());
//veya Collator trCollator = Collator.getInstance(new Locale("tr", "TR"));
return collator.compare(il1, il2);
}
}

}

使用这些代码,当我点击第三个选项卡时,我的应用程序会调用 HaritaFrament(第一个选项卡)onDestroyView 方法。
但是当我点击第二次时它不会调用 onDestroyView。
我不想破坏我的 HaritaFragment。

请帮我解决这个问题。

最佳答案

您要找的是ViewPager#setOffscreenPageLimit .

默认为 1,这意味着 ViewPager 将只保留当前位置之前的 1 个 fragment 和之后的 1 个 fragment 。如果您有 3 个 fragment 并且您不希望其中任何一个被 ViewPager 销毁,您可以将其设置为 2。

mViewPager.setOffscreenPageLimit(2);

关于当我点击第三次时,Android TabActivity 调用 onDestroyView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com