我实际上希望这个问题有意义,因为我从一开始就开始编写Java。我的术语不是特别好,虽然我理解大多数核心编码概念,但我的Java充其量是不稳定的。 soooo ...基于本教程,我已经构建了一个基本的Android应用程序 -
https://www.youtube.com/watch?v=K9rj_AFyLKk 这是3的第3部分。
该应用程序实际上没有任何实质内容,它只是允许用户通过滑动交换片段,其中有3个。我已经设法到达教程的末尾并且已经复制了应用程序非常相同。
我想添加一个额外的功能;无论如何,为每个片段添加一个命中计数器来计算每个片段被访问过多少次?
我在每个片段上都有一个额外的字符串,上面写着“我已被访问过”+ someVariable +“这多次”。
我觉得很容易计算一个事件,例如按钮点击,但是无法看到我可以在这样的地方实现相同的目标吗?
下面是MainActivity.java,我认为它处理片段的交换
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends FragmentActivity {
ViewPager viewPager = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager)findViewById(R.id.pager);
FragmentManager fragmentManager = getSupportFragmentManager();
viewPager.setAdapter(new MyAdapter(fragmentManager));
}
}
class MyAdapter extends FragmentStatePagerAdapter{
public MyAdapter(FragmentManager fm) {
super(fm);
}
下面是一个延续,添加了用于存储计数器的变量,甚至不确定这是否正确,但是已经尝试过,因为这是我要为按钮事件做的事情 - 存储计数器作为事件是烧成。
//@Override
int numSwipes = 0;
int numSwipes2 = 0;
int numSwipes3 = 0;
public Fragment getItem(int i) {
Fragment fragment = null;
if(i==0)
{
fragment = new FragmentA();
numSwipes++;
}
if(i==1)
{
fragment = new FragmentB();
numSwipes2++;
}
if(i==2)
{
fragment = new FragmentC();
numSwipes3++;
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
public CharSequence getPageTitle(int position){
if(position==0)
{
return "tab 1";
}
if(position==1)
{
return "tab 2";
}
if(position==2)
{
return "tab 3";
}
return null;
}
}
每个片段都有单独的类;除了R.layout之外,FragmentA.java,FragmentB.java和FragmentC.java看起来彼此相同,对应于它的相关片段 -
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class FragmentA extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_a,container,false);
}
}
如果使用tally变量是正确的方法,我怎么能在片段类中访问它们?