0

So we try to write the strings we get from an fragment to save in an array and to set the text from this array in a textview from another fragment but if you try the application kills himself:

public View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_timetable, container, false);
    myTL = view.findViewById(R.id.tableLayoutTage);
    MO1 = view.findViewById(R.id.MO1);
    VGMO1 = view.findViewById(R.id.MO1);
    DI1 = view.findViewById(R.id.DI1);

    DI1 = view.findViewById(R.id.DI1);
    FachMO1 = (TextView) VGMO1.findViewById(R.id.textViewFach);
    LehrerMO1 = (TextView) VGMO1.findViewById(R.id.textViewLehrer);
    RaumMO1 = (TextView) VGMO1.findViewById(R.id.textViewRaum);
    FachDI1 = (TextView) DI1.findViewById(R.id.textViewFach);
    stundeZuweisen = new StundeZuweisen();

    DI1.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            String a = Montag1[0];
            String b = Montag1[1];
            String c = Montag1[2];
            schreibeInTV(a, b, c);
            return true;
        }
    });


    VGMO1.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            String ViewID = getResources().getResourceName(view.getId());
            IDfinal = cutID(ViewID);


            Log.d(TAG, "" + IDfinal);

            Intent intent = new Intent(getActivity(), StundeZuweisen.class);
            intent.putExtra("ViewID", IDfinal);
            startActivity(intent);
            return true;
        }
    });


    //arrayToString();


    return view;
}

private void arrayToString() {
    a = Montag1[1];
    b = Montag1[2];
    c = Montag1[0];
    Log.d(TAG, "" + a + b);
}


public String cutID(String longID) {
    if (longID.length() == 3) {
        return longID;
    } else if (longID.length() > 3) {
        return longID.substring(longID.length() - 3);
    }
    return longID;
}


public void setzeTextViewFachMO1() {
    FachMO1.setText(stundeZuweisen.getFachSpinnerText());
}

public void schreibeInArray(String Stunde) {
    FachMO1.setText(Stunde);
}

public void schreibeInTV(String a, String b, String c) {
    FachMO1.setText(a);
    LehrerMO1.setText(b);
    RaumMO1.setText(c);
    String FachMO1Test =  FachMO1.getText().toString();
    Log.d(TAG, "schreibeInTV: korrekt" + FachMO1Test);
}

}

And we get this error

06-29 08:27:35.233 6311-6311/com.example.jannikokan.timetable E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.jannikokan.timetable, PID: 6311 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.example.jannikokan.timetable.Table.TimeTableFragment.schreibeInTV(TimeTableFragment.java:210) at com.example.jannikokan.timetable.Table.TimeTableFragment$1.onLongClick(TimeTableFragment.java:154) at android.view.View.performLongClickInternal(View.java:6374) at android.view.View.performLongClick(View.java:6332) at android.view.View.performLongClick(View.java:6350) at android.view.View$CheckForLongPress.run(View.java:24895) at android.os.Handler.handleCallback(Handler.java:808) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7425) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

Can someone help us slove our problem? Thank you

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
jungWombat
  • 23
  • 7

1 Answers1

0

Try not to set the values directly, use startActivityForResult()

TimeTableFragment

VGMO1.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            String ViewID = getResources().getResourceName(view.getId());
            IDfinal = cutID(ViewID);

            Log.d(TAG, "" + IDfinal);

            Intent intent = new Intent(getActivity(), StundeZuweisen.class);
            intent.putExtra("ViewID", IDfinal);

            startActivityForResult(intent, 0);
            return true;
        }
    });


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == Activity.RESULT_OK && requestCode == 0){
        String arr[] = data.getStringArrayExtra("result");
        schreibeInTV(arr[0],arr[1],arr[2]);
    }
}

StundeZuweisen

    buttonStundeZuweisen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String FKZ = fachSpinnerText;
            String LKZ = lehrerSpinnerText;
            String RKZ = raumSpinnerText;
            Log.d(TAG, "" + ViewID + FKZ + LKZ + RKZ);
            //timeTableFragment.schreibeInArray(ViewID, FKZ,LKZ,RKZ);

            Intent returnIntent = new Intent();
            returnIntent.putExtra("result",(new String[]{FKZ, LKZ, RKZ}));
            setResult(Activity.RESULT_OK,returnIntent);
            finish();


            Toast.makeText(StundeZuweisen.this, "Stunde wurde zugewiesen.", Toast.LENGTH_LONG).show();

            /*boolean istGespeichert =  myDb.speicherStunde(ViewID, FKZ, LKZ , RKZ);
            if (istGespeichert == true){
                Toast.makeText(StundeZuweisen.this, "Stunde wurde zugewiesen.", Toast.LENGTH_LONG).show();
            }*/
        }
    });
user1892364
  • 259
  • 2
  • 12