2017-05-18 3 views
0

Ich habe eine Java-Klasse, die eine allgemeine Benutzerbereichsaktivität mit einigen Schaltflächen darstellt, ich muss diese Schaltflächen, Texte usw. in eine Aktivität mit Registerkarten integrieren. Hier ist die generische Klasse.Schaltfläche in Fragmenten hinzufügen

public class UserAreaActivity extends AppCompatActivity { 
    private Button scan_btn; 
    // User Session Manager Class 
    UserSessionManager session; 
Context thisContext; 

// Button Logout 
Button btnLogout; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_user_area); 

    thisContext = getApplicationContext(); 

    // Session class instance 
    session = new UserSessionManager(getApplicationContext()); 

    final EditText etUsername= (EditText) findViewById(R.id.etUsername); 
    final TextView welcomeMessage=(TextView) findViewById(R.id.tvWelcomeMsg); 

    // Button logout 
    btnLogout = (Button) findViewById(R.id.btnLogout); 

//  Toast.makeText(getApplicationContext(), 
//    "User Login Status: " + session.isUserLoggedIn(), 
// 

    //get user data from session 
    HashMap<String, String> user = session.getUserDetails(); 
    //get name 
    String name = user.get(UserSessionManager.KEY_NAME); 
    // get username 
    String username = user.get(UserSessionManager.KEY_USERNAME); 



    //Intent intent = getIntent(); 



    String message = name + " welcome to your user area!"; 
    welcomeMessage.setText(message); 
    etUsername.setText(username); 

    scan_btn=(Button) findViewById(R.id.scan_btn); 
    final Activity activity = this; 

    btnLogout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Clear the User session data 
      // and redirect user to LoginActivity 
      session.logoutUser(); 
     } 
    }); 

    scan_btn.setOnClickListener 
      (
        new View.OnClickListener() 
        { 
         @Override 
         public void onClick(View view) 
         { 
          IntentIntegrator integrator = new IntentIntegrator(activity); 
          integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); 
          integrator.setPrompt("Scan"); 
          integrator.setCameraId(0); 
          integrator.setBeepEnabled(false); 
          integrator.setBarcodeImageEnabled(false); 
          integrator.initiateScan(); 
         } 
        } 
      ); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
    if(result != null) 
    { 
     if(result.getContents()==null) 
     { 
      Toast.makeText(this,"Hai cancellato la scansione", Toast.LENGTH_LONG).show(); 
     } 
     else 
     { 
      Toast.makeText(this, result.getContents(),Toast.LENGTH_LONG).show(); 
     } 
    } 
    else 
    { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

} 

}

Da Java keine Mehrfachvererbung nicht unterstützt, wie kann ich von AppCompatActivity und Fragmente zugleich für die Integration in meine TabbedView Tasten ecc erweitern ..?

Hier ist das Fragment, wo ich will meinen Code

public class Tab3Add extends Fragment { 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.tab3add, container, false); 
    return rootView; 
} 

}

+0

Ihre Frage ist mir nicht klar. Tatsächlich wird das Fragment dazu verwendet, einen Teil der Arbeit zu erledigen, die in einer Aktivität untergebracht ist. Ihr gewünschter Aufgabencode wird in Fragment implementiert und das Fragment wird zur Aktivität hinzugefügt. Sieh dir das an http://www.vogella.com/tutorials/AndroidFragments/article.html –

+0

Du kannst nicht zwei Klassen gleichzeitig erben. Es ist nicht möglich, eine Aktivität und ein Fragment gleichzeitig zu erweitern. Aber Sie können sie trennen, aber die Aktivität hinzufügen. Der Fragmentteil wird entsprechend seinem Ablauf für die Aktivität ausgeführt –

Antwort

0

In diesem Fall stellen die beste Sie tun können, das Layout der Aktivität ist aufblasen im Fragment und manuell die Klick-Handler bewegen und die andere Code in sie, während sie darauf achten, den Lebenszyklus Unterschiede zwischen einem Activity und einem Fragment:

public class Tab3Add extends Fragment { 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_user_area, container, false); 
    // Move your other code as well 
    return rootView; 
} 

auch wenn dort irgendwelche onClick Attribute in R.layout.activity_user_area müssen Sie sie entfernen und sie programmatisch hinzufügen.

Verwandte Themen