Obwohl ich ähnliche Post-Fragen gelesen habe, habe ich keine Lösung für mein Problem gefunden. Wie Sie im Titel sehen können, kann ich Textview in TextFragment nicht ändern. Ich erhalte diesen Fehler: 07-09 15: 05: 55.593 6441-6441/com.eguide.dimitris.campusguide E/AndroidRuntime: FATALE AUSNAHME: Haupt 07-09 15: 05: 55.593 6441-6441/com.eguide. dimitris.campusguide E/AndroidRuntime: java.lang.NullPointerException 07-09 15: 05: 55.593 6441-6441/com.eguide.dimitris.campusguide E/AndroidRuntime: at com.eguide.dimitris.campusguide.mainActivity $ 1. onVisitStart (mainActivity.java:66)TextView in Fragment von Hauptaktivität (mit Schnittstelle) kann nicht geändert werden,
Also ich würde jede Hilfe zu schätzen wissen. Vielen Dank im Voraus.
mainActivity
public class mainActivity extends Activity implements inter {
public PlaceManager placeManager;
public PlaceEventListener placeEventListener;
public String name;
TextView tt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Gimbal.setApiKey(this.getApplication(), "5436462c-6400-48f4-b6af-e0ad2094550f");
CommunicationManager.getInstance().startReceivingCommunications();
tt=(TextView) findViewById(R.id.test);
}
@Override
public void respond(String data) {
FragmentManager manager2=getFragmentManager();
textFragment frag2= (textFragment) manager2.findFragmentById(R.id.text_fragment);
frag2.changeText(data);
}
@Override
public void barstatus() {
FragmentManager manager1=getFragmentManager();
imageFragment frag1=(imageFragment) manager1.findFragmentById(R.id.image_fragment);
frag1.changeStatus();
}
@Override
public void barstatus2() {
FragmentManager manager1=getFragmentManager();
imageFragment frag1=(imageFragment) manager1.findFragmentById(R.id.image_fragment);
frag1.changeStatus2();
}
public void changestatus(){
placeEventListener= new PlaceEventListener() {
@Override
public void onVisitStart(Visit visit) {
super.onVisitStart(visit);
name=visit.getPlace().getName().toString();
if (name!=null){
respond(name);
barstatus2();
}
}
};
textFragment
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class textFragment extends Fragment {
TextView text1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.text_fragment, container,false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
text1 = (TextView)getActivity().findViewById(R.id.textF);
text1.setText("Press Start button to find buildings near you");
}
public void changeText(String data){
text1 = (TextView)getActivity().findViewById(R.id.textF);
text1.setText(data.toString());
}
}
imageFragment
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.transition.Visibility;
import android.view.ActionProvider;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
public class imageFragment extends Fragment {
private ProgressBar bar;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.image_fragment,container,false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
bar=(ProgressBar) getActivity().findViewById(R.id.progressBar);
bar.setVisibility(View.INVISIBLE);
}
public void changeStatus(){
bar=(ProgressBar) getActivity().findViewById(R.id.progressBar);
bar.setVisibility(View.VISIBLE);
}
public void changeStatus2(){
bar=(ProgressBar) getActivity().findViewById(R.id.progressBar);
bar.setVisibility(View.INVISIBLE);
}
}
interface
public interface inter {
public void respond(String data);
public void barstatus();
public void barstatus2();
}
Jungs beachten Sie auch tha ich versucht habe und dies in mainActivity aber nichts geändert.
inter inte;
public void changestatus(){
placeEventListener= new PlaceEventListener() {
@Override
public void onVisitStart(Visit visit) {
super.onVisitStart(visit);
name=visit.getPlace().getName().toString();
if (name!=null){
inte.respond(name);
inte.barstatus2();
}
}
};
EDIT: wenn statt
public void changestatus(){
placeEventListener= new PlaceEventListener() {
@Override
public void onVisitStart(Visit visit) {
super.onVisitStart(visit);
name=visit.getPlace().getName().toString();
if (name!=null){
respond(name);
barstatus2();
}
}
Verwendung
@Override
protected void onStart() {
super.onStart();
placeEventListener= new PlaceEventListener() {
@Override
public void onVisitStart(Visit visit) {
super.onVisitStart(visit);
name=visit.getPlace().getName();
if (name!=null){
respond(name);
barstatus2();
}
}
};
ich kann Änderungen vornehmen ... können Sie mir erklären, warum ?? Ich möchte nicht, dass dieser Codeblock onStart() ausgeführt wird. Ich möchte, dass dieser Codeblock in einer Methode funktioniert.
haben Sie Ihren Code zu debuggen versucht, besser zu verstehen, wo passiert der Fehler? Es wäre hilfreich, anstelle eines großen Teils des Codes die Methode oder Klasse zu haben, in der der Fehler auftritt. – Daniele
bei com.eguide.dimitris.campusguide.mainActivity $ 1.onVisitStart (mainActivity.java:66) Das ist, wo der Fehler ist .... –
ok, so dass Sie möglicherweise nicht alle Klassen in Ihrer Frage haben müssen. Bitte versuchen Sie, Ihre Frage etwas zu bereinigen, damit wir besser verstehen können, wo das Problem liegt. – Daniele