2

Hallo, ich bin ein Amateur in Android, und ich habe ein großes Problem mit Aktivitätsmethoden in meiner Fragmentklasse.Verwenden von Aktivitätsmethoden in Fragment

Ich möchte setContentView, findViewById und getMenuInflater implementieren. Leider weiß ich nicht, wie es geht.

public class WagaFragment extends Fragment{ 

    private Spinner fromSpinner, toSpinner; 
    private EditText fromEditText, toEditText; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     **setContentView**(R.layout.activity_main); 


     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.units, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     fromSpinner = (Spinner) **findViewById**(R.id.spinner_from); 
     toSpinner = (Spinner) **findViewById**(R.id.spinner_to); 

     fromSpinner.setAdapter(adapter); 
     toSpinner.setAdapter(adapter); 

     fromEditText = (EditText) **findViewById**(R.id.editText_from); 
     toEditText = (EditText) **findViewById**(R.id.editText_to); 


     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     toolbar.setTitle(R.string.app_name); 
     toolbar.setTitleTextColor(Color.YELLOW); 


    } 

    @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; 
    } 

    public void konwertuj(View view) { 
     // Get the string from the Spinners and number from the EditText 
     String fromString = (String) fromSpinner.getSelectedItem(); 
     String toString = (String) toSpinner.getSelectedItem(); 
     double input = Double.valueOf(fromEditText.getText().toString()); 

     // Convert the strings to something in our Unit enu, 
     Konwerter.Jednostka fromJednostka = Konwerter.Jednostka.fromString(fromString); 
     Konwerter.Jednostka toJednostka = Konwerter.Jednostka.fromString(toString); 

     // Create a converter object and convert! 
     Konwerter konwerter = new Konwerter(fromJednostka, toJednostka); 
     double result = konwerter.convert(input); 
     toEditText.setText(String.valueOf(result)); 
    } 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.tab_fragment_1, container, false); 

    } 

} 
+1

Sie müssen die Grundlagen der Fragmente gehen. So erstellen und inflationieren Sie ein Fragment nicht und greifen Sie auf einige Aktivitätsmethoden zu, die Sie verwenden können getActivity() – mobilepotato7

+0

Sie sollten die Methoden von activity nicht in Ihren Fragmenten verwenden, während Sie sie entwerfen. Sie sollten stattdessen Ihr Fragment als Standalone-Box mit einer Standard- und vordefinierten Schnittstelle mit seiner übergeordneten Aktivität entwerfen. Ein Fragment sollte seine Grenzen nicht überschreiten, zum Beispiel sollten Fragmente nicht 'setContentView' ihrer Fragmente verwenden. Ein Fragment muss nur für seine eigene Ansicht verantwortlich sein, nicht für die seiner übergeordneten Aktivität. –

Antwort

0

In Fragmente "content" (in Ihrem meanign) in public View onCreateView Verfahren definiert.

nach Ihren Code: Sie haben

View view = inflater.inflate(R.layout.tab_fragment_1, container, false); 
<your control> = <Control type> view.findViewById(<control id>) 

verwenden Für MenuInflater dies versuchen:

MenuInflater inflater = getActivity().getMenuInflater(); 
0

Versuchen bei onCreateView:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_name, container, false); 
    fromSpinner = (Spinner) view.findViewById(R.id.spinner_from); 
    return view; 
    } 
Verwandte Themen