Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将注销按钮添加到选项卡片段类时出现问题?_Android_Android Studio_Android Fragments - Fatal编程技术网

Android 将注销按钮添加到选项卡片段类时出现问题?

Android 将注销按钮添加到选项卡片段类时出现问题?,android,android-studio,android-fragments,Android,Android Studio,Android Fragments,我最近制作了一个简单的应用程序,允许用户注册信息、登录和注销。我想增加这个应用程序的复杂性,添加一个用户登录时看到的选项卡式活动,并让第三个选项卡包含一个文本视图,让他们注销 以下是我以前在添加选项卡之前注销主要活动时所做的操作: public class MainActivity extends AppCompatActivity{ private Button bLogout; private Session session; @Override protec

我最近制作了一个简单的应用程序,允许用户注册信息、登录和注销。我想增加这个应用程序的复杂性,添加一个用户登录时看到的选项卡式活动,并让第三个选项卡包含一个文本视图,让他们注销

以下是我以前在添加选项卡之前注销主要活动时所做的操作:

public class MainActivity extends AppCompatActivity{
    private Button bLogout;
    private Session session;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        session = new Session(this);
        if(!session.loggedin()){
            logout();
        }
        bLogout = (Button) findViewById(R.id.bLogout);
        bLogout.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                logout();
            }
        });
    }

    private void logout(){
        session.setLoggedin(false);
        finish();
        startActivity(new Intent(MainActivity.this, LoginActivity.class));
    }
}
现在,我想把这个相同的概念转移到我的Tab3片段类中,但是我不断地得到错误。以下是没有错误的Tab3类:

public class Tab3User extends Fragment{
    private TextView tvLogout;
    private Session session;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab3User, container, false);

        tvLogout = (TextView) rootView.findViewById(R.id.tvLogout);
        return rootView;
    }

}
错误发生在我尝试使用此作为上下文创建新会话时,以及在我尝试使用“Tab3User.this”时注销函数中的“startActivity”方法中。onClickListener似乎正在工作,但我对android开发非常陌生,所以我确信我只是犯了一个错误。以下是我添加所有内容的尝试:

public class Tab3User extends Fragment{
    private TextView tvLogout;
    private Session session;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab3User, container, false);

        tvLogout = (TextView) rootView.findViewById(R.id.tvLogout);
        return rootView;

        //error here under the "this"
        session = new Session(this);

        if(!session.loggedin()){
            logout();
        }
        tvLogout.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                logout();
            }
        });
    }

    private void logout(){
        session.setLoggedin(false);
        finish();
        startActivity(new Intent(Tab3User.this, LoginActivity.class));
    }

}

谢谢你的帮助。我一直在网上寻找,但像这样的问题的许多答案都很模糊,所以我决定发布。

在一个片段中,您需要使用getContext()/getActivity()


在片段中,需要使用getContext()/getActivity()


必须记住,片段的存在是为了简化复杂视图的管理,但它们本身不是活动。必须记住,片段的存在是为了简化复杂视图的管理,但它们本身不是活动。
session = new Session(getContext());