Zunächst einmal, ich bin neu in Android-Programmierung, so dass es mir wirklich leid tut, wenn dies einige noob Fehler ist. Ich habe die gleiche Datei als eine Aktivität implementiert und es hat funktioniert. Aber wenn ich es in ein Fragment stecke, tut es das nicht. Ich konnte nicht ein anständiges Tutorial über Fragmente bekommen, also was ich implementiert habe kommt hauptsächlich aus Theorie und Beispielprojekten. Das Fehlerprotokoll sagt, "java.lang.NullPointerException: Versuch, virtuelle Methode" android.view.View android aufzurufen. view.View.findViewById (int) 'für eine Nullobjektreferenz'.Implementieren Spinner Inside Fragmnet
Ich überprüfte stackoverflow für das gleiche und fand die Antworten wo immer über falsche IDs. Aber in meinem Fall ist das ID korrekt, glaube ich. Es wäre schön, wenn mir jemand dabei helfen könnte. Oh und auch, wenn Sie könnten, bitte sagen Sie mir, ob ich den Code in den entsprechenden Funktionen geschrieben habe. Nur um zu verdeutlichen, ist die Funktion public void equalClicked (View v) der Berechnungsteil, der stattfinden soll, wenn die Schaltfläche angeklickt wurde. Ich arbeite jetzt seit fast 2 Tagen daran. -_-
Hier ist meine PhotosFragment.java Datei:
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
public class PhotosFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters
EditText age,weight,height;
TextView answer,answer2,answer3;
String selected,a,b,c;
RadioGroup gr;
RadioButton r;
double ans1,ans2,ans3;
// TODO: Rename and change types of parameters
private OnFragmentInteractionListener mListener;
public PhotosFragment() {
// Required empty public constructor
}
// TODO: Rename and change types and number of parameters
public static PhotosFragment newInstance() {
PhotosFragment fragment = new PhotosFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
Spinner myspinner=(Spinner) getView().findViewById(R.id.fragment_photos_spinner);
ArrayAdapter<String> myAdapter =new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.act));
myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
myspinner.setAdapter(myAdapter);
age= (EditText) getView().findViewById (R.id.fragment_photos_age);
weight= (EditText) getView().findViewById (R.id.fragment_photos_weight);
height= (EditText) getView().findViewById (R.id.fragment_photos_height);
answer= (TextView) getView().findViewById (R.id.fragment_photos_answer);
answer2= (TextView) getView().findViewById (R.id.fragment_photos_answer2);
answer3= (TextView) getView().findViewById (R.id.fragment_photos_answer3);
gr=(RadioGroup) getView().findViewById(R.id.fragment_photos_rgroup);
myspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected (AdapterView<?> parent,View view,int position,long id){
selected=(String)parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected (AdapterView<?> parent){
}
});
return inflater.inflate(R.layout.fragment_photos, container, false);
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);
}
public void equalClicked(View v){
double input1= Double.parseDouble(age.getText().toString());
double input2= Double.parseDouble(weight.getText().toString());
double input3= Double.parseDouble(height.getText().toString());
int rid=gr.getCheckedRadioButtonId();
r=(RadioButton) getView().findViewById(rid);
String s=r.getText().toString();
if(s.contentEquals("Male")) {
ans1=((10 * input2) + (6.25 * input3) - (5 * input1) + 5);
}
else
{
ans1=((10 * input2) + (6.25 * input3) - (5 * input1) - 161);
}
if(selected.contentEquals("Little to No exercise")){
ans1=ans1 * 1.2;
ans2=ans1 + 1000;
ans3=ans1 - 1000;
a=Double.toString(ans1);
b=Double.toString(ans2);
c=Double.toString(ans3);
answer.setText(a + "cal");
answer2.setText(b + "cal to increase 1 kg in a week");
answer3.setText(c + "cal to decrease 1 kg in a week");
}
else if(selected.contentEquals("Light exercise (1–3 days per week)")){
ans1=ans1 * 1.375;
ans2=ans1 + 1000;
ans3=ans1 - 1000;
a=Double.toString(ans1);
b=Double.toString(ans2);
c=Double.toString(ans3);
answer.setText(a + "cal");
answer2.setText(b + "cal to increase 1 kg in a week");
answer3.setText(c + "cal to decrease 1 kg in a week");
}
else if(selected.contentEquals("Moderate exercise (3–5 days per week)")){
ans1=ans1 * 1.55;
ans2=ans1 + 1000;
ans3=ans1 - 1000;
a=Double.toString(ans1);
b=Double.toString(ans2);
c=Double.toString(ans3);
answer.setText(a + "cal");
answer2.setText(b + "cal to increase 1 kg in a week");
answer3.setText(c + "cal to decrease 1 kg in a week");
}
else if(selected.contentEquals("Heavy exercise (6–7 days per week)")){
ans1=ans1 * 1.725;
ans2=ans1 + 1000;
ans3=ans1 - 1000;
a=Double.toString(ans1);
b=Double.toString(ans2);
c=Double.toString(ans3);
answer.setText(a + "cal");
answer2.setText(b + "cal to increase 1 kg in a week");
answer3.setText(c + "cal to decrease 1 kg in a week");
}
else{
ans1=ans1 * 1.9;
ans2=ans1 + 1000;
ans3=ans1 - 1000;
a=Double.toString(ans1);
b=Double.toString(ans2);
c=Double.toString(ans3);
answer.setText(a + "cal");
answer2.setText(b + "cal to increase 1 kg in a week");
answer3.setText(c + "cal to decrease 1 kg in a week");
}
}
}
Hier ist es entsprechende XML-Datei:
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:alpha="0.3"
android:src="@drawable/ic_photo_library_black_24dp" />
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".PhotosFragment">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_age"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<EditText
android:id="@+id/fragment_photos_age"
android:inputType="number"
android:layout_width="178dp"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_gender"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fragment_photos_rgroup"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_female"
android:id="@+id/fragment_photos_female"
android:layout_gravity="center_horizontal" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_male"
android:id="@+id/fragment_photos_male" />
</RadioGroup>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_weight"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<EditText
android:id="@+id/fragment_photos_weight"
android:inputType="number"
android:layout_width="171dp"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_height"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<EditText
android:id="@+id/fragment_photos_height"
android:inputType="number"
android:layout_width="176dp"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_daily_activity"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/fragment_photos_spinner"
android:layout_gravity="center_horizontal" />
<Button
android:text="@string/btn_calculate"
android:onClick="equalClicked"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/fragment_photos_answer"
android:layout_width="400dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView
android:id="@+id/fragment_photos_answer2"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView
android:id="@+id/fragment_photos_answer3"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"/>
</LinearLayout>
</ScrollView>
Hier ist ein Protokoll meiner Fehler:
Hier ist die Saiten .xml-Datei:
<!-- Calorie -->
<string name="title_calorie">Calorie</string>
<string name="lbl_age">Age</string>
<string name="lbl_gender">Gender</string>
<string name="lbl_female">Female</string>
<string name="lbl_male">Male</string>
<string name="lbl_weight">Weight (in kg)</string>
<string name="lbl_height">Height (in cm)</string>
<string name="lbl_daily_activity">Daily Activity</string>
<string name="btn_calculate">Calculate</string>
<string-array name="act">
<item>Little to No exercise</item>
<item>Light exercise (1–3 days per week)</item>
<item>Moderate exercise (3–5 days per week)</item>
<item>Heavy exercise (6–7 days per week)</item>
<item>Very Heavy exercise (twice per day, extra heavy workouts)</item>
</string-array>
getView() null zurück Objekt, Ihre meisten Ihr Layout erste –