Java 从片段中的数组设置TextView
因此,我们尝试将从片段中获取的字符串写入一个数组,并从另一个片段的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
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
是从系统调用的,您自己不调用它。我这样做了,但现在应用程序崩溃,我无法提供结果崩溃信息。您可能需要检查请求代码,我更新了我的答案。但是如果你遇到了一个新的错误,很难在没有看到它的情况下说出哪里出了问题。