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());