Hallo Ich habe eine Aufgabe zum Erstellen von Inhalten im Fragment-Grundlayout gegeben. Wenn ich jedoch eine Swipe-Aktivität mit der Aktionsleiste auf der Registerkarte erstellt habe, kann ich das Fragmentlayout in den einzelnen Tabs nicht bearbeiten. Hier ist die Codes wie folgt:Interagieren mit Sichten in Fragmentaktivität nicht möglich
MainActivity.java: Methode i an das Fragment-Layout verweisen verwenden
(eine Standard-Swipe-Aktivität mit der Aktion Registerkarte erstellt)
package com.example.clement.testingfragments;
public class MainActivity extends AppCompatActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
// action bar
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
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();
}
});
//manage the fractions
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
fragmentTransaction.replace(android.R.id.content, new BlankFragment());
fragmentTransaction.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.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);
}
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public PlaceholderFragment() {
}
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(getArguments().getInt(ARG_SECTION_NUMBER) == 1) {
View rootView = inflater.inflate(R.layout.fragment_blank, container, false);
return rootView;
}else {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView textView = (TextView) rootView.findViewById(R.id.section_label);
textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
return rootView;
}
}
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "SECTION 1";
case 1:
return "SECTION 2";
case 2:
return "SECTION 3";
}
return null;
}
}
}
Ich habe dann die BlankFragment.java : (Standard Schaffung eines Fragments Grundlayout)
public class BlankFragment extends Fragment {
TextView mtv;
public BlankFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i("hello","hello");
View viewRoot = inflater.inflate(R.layout.fragment_blank, container, false);
mtv = (TextView)viewRoot.findViewById(R.id.testy);
mtv.setText("hello");
return viewRoot;
}
}
Das Problem dabei ist, dass ich ein nicht in der Lage bin Textview zu ändern, die innerhalb des fragment_blank.xml ist. Ich habe Forschung über das Internet und die Vorschläge wurden erstellt, um void-Methoden, mit getActivity(), onViewCreated(), Onstart(). All diese Dinge scheinen nicht zu funktionieren.
Ich habe eine if else-Schleife eingefügt, um eine Null zurückzugeben, unter der Bedingung, dass die Methode funktioniert, aber es läuft immer noch ohne eine Null zurückgeben und ich habe keine Ahnung, warum dies passiert.
Mein fragment_blank.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.clement.testingfragments.BlankFragment">
<TextView
android:id="@+id/testy"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
Lassen Sie mich wissen, wenn mehr Informationen benötigt werden. Ich suche aufrichtig nach Ihren Vorschlägen und Ratschlägen. Danke im Voraus!
oh verdammt so sorry ich schrieb die falsche XML-Datei für die Frage herunter. Es wurde bearbeitet. Bitte lesen Sie erneut dafür –
posten Sie Ihre XML und entfernen Sie unnötigen Code aus der Frage. –
okay, hier gehst du :) –