2016-12-30 55 views
0

我最近做了一个简单的应用程序,允许用户注册信息,登录和注销。我想通过添加用户在登录时看到的选项卡式活动,并让第三个选项卡包含一个将会注销它们的TextView来增加此应用程序的复杂性。无法将注销按钮添加到Tab片段类?

这里是我以前没有加入标签前,在我的主要活动注销:

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; 
    } 

} 

,当我尝试创建以此为背景的新会话时,我尝试使用“的错误发生,以及在我的注销功能的“startActivity”的方法Tab3User.this'。 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)); 
    } 

} 

感谢您的任何和所有帮助。我一直在网上寻找,但很多这样的问题的答案是非常模糊的,所以我决定发布。

回答

0

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

session = new Session(getContext()); 
+0

您必须记住,片段存在可以简化复杂视图的管理,但它们本身不是活动。 – francescortiz