Goodmorning alle, ich bin sehr neu auf Android und ich möchte eine Aktion eines Knopfes eines Fragments setzen ... Ich verwende diese Weise:ändern Aktivität von Schaltfläche in einem Fragment
Button butt1=(Button)findViewById(R.id.btn1);
butt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent int1=new Intent(MainActivity.this,newactivity.class);
startActivity(int1);
finish();
}
});
Das Problem ist, dass ich nicht weiß, wo diese Aktion platziert werden soll, wenn in der Hauptaktivitätsklasse oder in der Importfragmentklasse die Importfragmentklasse eine Liste mit Schaltflächen ist und ich möchte, dass jede Schaltfläche in eine andere verschoben wird Aktivität.
Dies ist der ImportFragment.class Code:
public class ImportFragment extends Fragment {
ListView listView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_import,container,false);
return rootView;
}
}
Dies ist die Hauptcode-Aktivität, die durch eine seitliche Navigationsleiste an das Fragment führen:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener, OnMapReadyCallback {
private GoogleMap mMap;
Button enobutt=(Button)findViewById(R.id.enobtn);
SupportMapFragment sMapFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sMapFragment = SupportMapFragment.newInstance();
sMapFragment.getMapAsync(this);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
android.app.FragmentManager fm = getFragmentManager();
android.support.v4.app.FragmentManager rFm = getSupportFragmentManager();
if(!sMapFragment.isAdded())
rFm.beginTransaction().add(R.id.map, sMapFragment).commit();
else
rFm.beginTransaction().show(sMapFragment).commit();
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
android.app.FragmentManager fn = getFragmentManager();
android.support.v4.app.FragmentManager sFm = getSupportFragmentManager();
int id = item.getItemId();
if(sMapFragment.isAdded())
sFm.beginTransaction().hide(sMapFragment).commit();
if (id == R.id.nav_camera) {
fn.beginTransaction().replace(R.id.content_frame, new ImportFragment()).commit();
} else if (id == R.id.nav_gallery) {
if(!sMapFragment.isAdded())
sFm.beginTransaction().add(R.id.map, sMapFragment).commit();
else
sFm.beginTransaction().show(sMapFragment).commit();
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_manage) {
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;}
}
Wie kann ich tun?
wenn Sie Aktivität von Fragmente zu ladende dann oncreate – sumit
diesen Code in Ihrem Fragmente setzen, wenn die Schaltfläche Teil des Bruchstück xml ist –
in Fragmenten auf Create den Code setzen kann Gibst du mir ein Beispiel für den Code? weil es nicht zu funktionieren scheint, aber vielleicht mache ich etwas falsch. Die Schaltfläche ist ein Teil des XML-Fragments ja .. genau – Eugae