从 Main Activity 到 Fragment(ViewPager) 的按钮?
Buttons from Main Activity to Fragment(ViewPage)?
所以我的 MainActivity 中有 2 个重要元素,一个按钮和一个编辑文本字段。我想让我的按钮只在第三个片段页面可见,该怎么做?这是我的代码。
DeviceFragment.java
package com.danmarker.decideforme;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by Laptop on 2015.03.17..
*/
public class DeviceFragment extends Fragment {
public static final String ImageIDKey = "imagekey";
public static final String DescriptionKey = "descriptionkey";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_device, container, false);
Bundle bundle = getArguments();
if(bundle != null)
{
int imageID = bundle.getInt(ImageIDKey);
String description = bundle.getString(DescriptionKey);
setValues(view, imageID, description);
}
return view;
}
private void setValues(View view, int imageID, String description) {
ImageView imageView = (ImageView) view.findViewById(R.id.imageViewDevice);
imageView.setImageResource(imageID);
TextView textView = (TextView) view.findViewById(R.id.tvDeviceDescription);
textView.setText(description);
}
}
DevicePagerAdaptor.java
package com.danmarker.decideforme;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
/**
* Created by Laptop on 2015.03.18..
*/
public class DevicePagerAdaptor extends FragmentPagerAdapter {
String[] devices;
String[] deviceDescription;
public DevicePagerAdaptor(FragmentManager fn, Context context) {
super(fn);
Resources resources = context.getResources();
devices = resources.getStringArray(R.array.devices);
deviceDescription = resources.getStringArray(R.array.device_description);
}
@Override
public Fragment getItem(int position) {
Bundle bundle = new Bundle();
bundle.putString(DeviceFragment.DescriptionKey, deviceDescription[position]);
bundle.putInt(DeviceFragment.ImageIDKey, getDeviceImageID(position));
DeviceFragment deviceFragment = new DeviceFragment();
deviceFragment.setArguments(bundle);
return deviceFragment;
}
private int getDeviceImageID(int position) {
int id = 0;
switch (position) {
}
return id;
}
@Override
public int getCount() {
return devices.length;
}
问题是,MainActivity 中的按钮覆盖在片段上,因此无论我如何滑动屏幕,它们都是可见的。我只想让它们可见,当我到达最后一个片段时。
怎么做?我也有一个 fragment_device.xml,我必须在 DeviceFragment 中声明按钮,或者什么?谢谢!
如果您正在使用 ViewPager
,您可以将 OnPageChangeListener
注册到您的 ViewPager
并使用 onPageSelected
方法来显示您的 Button
。
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int index) {
if (index == 2) {
button.setVisibility(View.VISIBLE);
}else{
button.setVisibility(View.GONE);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
传递 bundle 参数中的位置,并根据您获得的位置在片段中显示按钮
所以我的 MainActivity 中有 2 个重要元素,一个按钮和一个编辑文本字段。我想让我的按钮只在第三个片段页面可见,该怎么做?这是我的代码。
DeviceFragment.java
package com.danmarker.decideforme;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by Laptop on 2015.03.17..
*/
public class DeviceFragment extends Fragment {
public static final String ImageIDKey = "imagekey";
public static final String DescriptionKey = "descriptionkey";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_device, container, false);
Bundle bundle = getArguments();
if(bundle != null)
{
int imageID = bundle.getInt(ImageIDKey);
String description = bundle.getString(DescriptionKey);
setValues(view, imageID, description);
}
return view;
}
private void setValues(View view, int imageID, String description) {
ImageView imageView = (ImageView) view.findViewById(R.id.imageViewDevice);
imageView.setImageResource(imageID);
TextView textView = (TextView) view.findViewById(R.id.tvDeviceDescription);
textView.setText(description);
}
}
DevicePagerAdaptor.java
package com.danmarker.decideforme;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
/**
* Created by Laptop on 2015.03.18..
*/
public class DevicePagerAdaptor extends FragmentPagerAdapter {
String[] devices;
String[] deviceDescription;
public DevicePagerAdaptor(FragmentManager fn, Context context) {
super(fn);
Resources resources = context.getResources();
devices = resources.getStringArray(R.array.devices);
deviceDescription = resources.getStringArray(R.array.device_description);
}
@Override
public Fragment getItem(int position) {
Bundle bundle = new Bundle();
bundle.putString(DeviceFragment.DescriptionKey, deviceDescription[position]);
bundle.putInt(DeviceFragment.ImageIDKey, getDeviceImageID(position));
DeviceFragment deviceFragment = new DeviceFragment();
deviceFragment.setArguments(bundle);
return deviceFragment;
}
private int getDeviceImageID(int position) {
int id = 0;
switch (position) {
}
return id;
}
@Override
public int getCount() {
return devices.length;
}
问题是,MainActivity 中的按钮覆盖在片段上,因此无论我如何滑动屏幕,它们都是可见的。我只想让它们可见,当我到达最后一个片段时。 怎么做?我也有一个 fragment_device.xml,我必须在 DeviceFragment 中声明按钮,或者什么?谢谢!
如果您正在使用 ViewPager
,您可以将 OnPageChangeListener
注册到您的 ViewPager
并使用 onPageSelected
方法来显示您的 Button
。
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int index) {
if (index == 2) {
button.setVisibility(View.VISIBLE);
}else{
button.setVisibility(View.GONE);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
传递 bundle 参数中的位置,并根据您获得的位置在片段中显示按钮