Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从片段中的数组设置TextView_Java_Android_Arrays_Android Fragments_Nullpointerexception - Fatal编程技术网

Java 从片段中的数组设置TextView

Java 从片段中的数组设置TextView,java,android,arrays,android-fragments,nullpointerexception,Java,Android,Arrays,Android Fragments,Nullpointerexception,因此,我们尝试将从片段中获取的字符串写入一个数组,并从另一个片段的textview中设置该数组中的文本,但如果您尝试应用程序自杀: public View onCreateView(final LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_timetable, conta

因此,我们尝试将从片段中获取的字符串写入一个数组,并从另一个片段的textview中设置该数组中的文本,但如果您尝试应用程序自杀:

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

我们得到了这个错误

06-29 08:27:35.233 6311-6311/com.example.jannikokan.timeline E/AndroidRuntime:致命异常:主 流程:com.example.jannikokan.timeline,PID:6311 java.lang.NullPointerException:尝试在一个实例上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)” 空对象引用 在com.example.jannikokan.timeline.Table.TimeTableFragment.schreibeInTV(TimeTableFragment.java:210) 位于com.example.jannikokan.timeline.Table.TimeTableFragment$1.onLongClick(TimeTableFragment.java:154) 在android.view.view.performLongClickInternal上(view.java:6374) 在android.view.view.performLongClick(view.java:6332)中 在android.view.view.performLongClick(view.java:6350)中 在android.view.view$CheckForLongPress.run(view.java:24895) 位于android.os.Handler.handleCallback(Handler.java:808) 位于android.os.Handler.dispatchMessage(Handler.java:101) 位于android.os.Looper.loop(Looper.java:166) 位于android.app.ActivityThread.main(ActivityThread.java:7425) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:245) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

有人能帮我们解决问题吗?
谢谢

请不要直接设置值,请使用
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();
            }*/
        }
    });

你能发布fragment_timeline.xml吗?您也可以尝试
view.findViewById(…)等等。现在我不在家,但是如果我的github项目完全没有用findyviewById查找视图,因为我将textview作为片段包括在内。你能告诉我数据意图是什么吗,因为它无法解决。请在以下位置阅读有关此问题的更多信息:还请注意,
onActivityResult
是从系统调用的,您自己不调用它。我这样做了,但现在应用程序崩溃,我无法提供结果崩溃信息。您可能需要检查请求代码,我更新了我的答案。但是如果你遇到了一个新的错误,很难在没有看到它的情况下说出哪里出了问题。