2016-12-30 9 views
0

私は最近、ユーザーが情報、ログイン、ログアウトを登録できるシンプルなアプリを作った。私は、ログイン時にユーザが見るタブ付きアクティビティを追加し、3番目のタブにそれらをログアウトするTextViewが含まれるようにすることで、このアプリの複雑さを増やしたいと考えています。ここでログアウトボタンをタブフラグメントクラスに追加する際に問題がありますか?

は、私は、タブを追加する前に、私の主な活動でログアウトする前にやったことです:今

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

関連する問題