Calling Fragment from a generic button listener
I am new to android development and finding some issue in calling a
fragment. I have Home Activity class which extends SingleFragmentActivity
class.
The SingleFragmentActivity class is an abstract class which extends
SherlockFragmentActivity.
I have 2 Buttons signIn and register which is connected to a generic
listener. Based on the buttonID i need to call the SignIn or Register
fragment.
Based on the buttonID i am able to call different toast but not sure how
to call the fragments. I would also like to know if it is the right
approach.
Attached below all the code.
HomeActivity.java
package com.android.m2mpay;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class HomeActivity extends SingleFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Button mSignInButton;
Button mRegisterButton;
mSignInButton = (Button)findViewById(R.id.btnSignIn);
mRegisterButton = (Button)findViewById(R.id.btnRegister);
mSignInButton.setOnClickListener(btnListener);
mRegisterButton.setOnClickListener(btnListener);
}
@Override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
//outState.putInt("tab", getActionBar().getSelectedNavigationIndex());
}
private OnClickListener btnListener = new OnClickListener() {
@Override
public void onClick(View args) {
// TODO Auto-generated method stub
switch(args.getId())
{
case R.id.btnSignIn:
Toast.makeText(getBaseContext(),
"You have clicked first button",
Toast.LENGTH_SHORT).show();
break;
case R.id.btnRegister:
Toast.makeText(getBaseContext(),
"You have clicked Second button",
Toast.LENGTH_SHORT).show();
break;
}
}
};
@Override
protected Fragment createFragment() {
// TODO Auto-generated method stub
return null;
}
}
SingleFragmentActivity.java
package com.android.m2mpay;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
public abstract class SingleFragmentActivity extends
SherlockFragmentActivity {
protected abstract Fragment createFragment();
public void OnCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);
if(fragment == null)
{
fragment = createFragment();
fm.beginTransaction()
.add(R.id.fragmentContainer, fragment)
.commit();
}
}
}
SignInFragment.java
package com.android.m2mpay;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class SignInFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.signin_fragment, parent, false);
return v;
}
}
RegisterFragment.java
package com.android.m2mpay;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class RegisterFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.register_fragment, parent, false);
return v;
}
}
Thanks in Advance
No comments:
Post a Comment