怎么在Java中调用已声明的变量

来源:爱站网时间:2022-01-27编辑:网友分享
不少朋友都想知道怎么在Java中调用已声明的变量的内容,今天爱站技术频道小编特地给大家整理了相关资料供大家参考,感兴趣的小伙伴可以随时来浏览阅读。

问题描述


我尝试了多种方法在onCreateView中调用已声明的变量'location',但仅显示错误。

首先,我不能使用getIntent(),因为ArrayListFragment是静态类。

由于缺乏我的Java知识,在这种情况下很难找到一种方法。

您的建议将不胜感激。

在下面的onCreateView中注释了我要调用变量的位置。

public class FragmentStatePagerSupport extends FragmentActivity {
MyAdapter myAdapter;
ViewPager mPager;
String location;

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

    location = getIntent().getStringExtra( "name" );

    myAdapter = new MyAdapter(getSupportFragmentManager());

    mPager = (ViewPager)findViewById( R.id.pager );
    mPager.setAdapter( myAdapter );



}

private class MyAdapter extends FragmentStatePagerAdapter {
    public MyAdapter(FragmentManager fm) {
        super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        return ArrayListFragment.newInstance(position);
    }

    @Override
    public int getItemPosition(@NonNull Object object) {
        return super.getItemPosition( object );
    }

    @Override
    public int getCount() {
        return head_array.length;
    }
}

public static class ArrayListFragment extends ListFragment {
    int mNum;

    static ArrayListFragment newInstance(int num){
        ArrayListFragment arrayListFragment = new ArrayListFragment();
        Bundle bundle = new Bundle(  );
        bundle.putInt( "num", num );
        arrayListFragment.setArguments( bundle );
        return arrayListFragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        mNum = getArguments() != null ? getArguments().getInt( "num" ) : 1;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate( R.layout.fragment_pager_list, container, false );

        //Here, I want to call a variable 'location' that is declared in FragmentStatePagerSupport class//

        return v;
        }

    }


}

思路一:


这里有一个很大的问题;因为您永远不要将外部类设为私有,因为没有人可以访问它。如果您不想多次创建它,请尝试使其成为Singleton类。如果添加父类也很好,它们与理解您的想法和对象关系非常相关。顶级类永远不能是静态的,私有的,受保护的……您甚至不必声明它们是公共的。创建具有此类限制的类的唯一方法是使用嵌套类。无论如何,我认为您可能正在寻找的是将修饰符添加到局部变量。如果我没看错,您正在尝试将String传递到位置,因此应这样声明:private String location = getIntent().getStringExtra( "name" );在静态类内部,将变量声明为static。 ArrayListFragment的构造函数也不应该是静态的。从概念上讲,它也是没有意义的,因为所有类的构造函数都是相同的。由于您在做什么,我想您可能正在尝试制作Singleton。为此,请创建一个私有构造函数和一个调用该构造函数的public static方法(在类内部)。

思路二:


[这是因为ArrayListFragment类是静态的。

怎么在Java中调用已声明的变量的内容,小编给大家一一解答出来了,在阅读过程中遇到什么问题的话,欢迎来给小编留言。

上一篇:Tiintint返回所存在的问题

下一篇:Java编程中签名更改代码怎么实现

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载