0

我有一门课MainActivity,我在其中实现标签+滑动导航。我正在为不同的碎片创建不同的 java 文件。但问题是我将无法访问MainActivity类中变量的值。现在我已经将片段类放在MainActivity类中,并且应用程序运行良好。如果要为单独的片段创建单独的 java 文件,如何实现相同的结果。这是我现在的fagment类:

public static class fragmentLeft extends Fragment{
    public fragmentLeft(){} 

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_left,
                container, false);
        View.OnClickListener mStartListener = new OnClickListener() {
            public void onClick(View v) {
                //mChronometer.start();

                if (v.getId() == R.id.sign_in_button && !mPlusClient.isConnected()) {
                    Toast.makeText(getActivity(), "sadf", Toast.LENGTH_LONG).show();
                    if (mConnectionResult == null) {
                        mConnectionProgressDialog.show();
                    } else {
                        try {
                            mConnectionResult.startResolutionForResult(getActivity(), REQUEST_CODE_RESOLVE_ERR);
                        } catch (SendIntentException e) {
                            // Try connecting again.
                            Toast.makeText(getActivity(),(CharSequence) e, Toast.LENGTH_LONG).show();
                            mConnectionResult = null;
                            mPlusClient.connect();
                        }
                    }
                }

            }
        };
        rootView.findViewById(R.id.sign_in_button).setOnClickListener(mStartListener);

        return rootView;
    }
}

MainActivity这些是我想从片段类访问的类中存在的变量:

private static ProgressDialog mConnectionProgressDialog;
private static PlusClient mPlusClient;
private static ConnectionResult mConnectionResult;
4

1 回答 1

1

您的问题非常广泛,我不清楚您到底在寻找什么。但是,您要做的事情相对简单。看一下这个例子(它与 Google Play 游戏服务有关,比您想要实现的要复杂得多):

Google Play 游戏服务多人设备方向更改将用户踢出房间

访问不同片段中的变量有多种方式,“推荐”的方式可能是实现一个监听器接口。我经常使用一种更简单的方法,该方法基于从这样的活动中调用片段中的方法:

    myFrag fragment = (myFrag) getSupportFragmentManager().findFragmentByTag("myFrag");
    fragment.someMethod();

另一种简单的方法是使用共享首选项直接访问变量。

于 2013-07-19T18:15:48.283 回答