2016-09-03 6 views
0

so ist dies mein Code, der eine chronometer meiner App implementiert:Warum wird meine XML-Datei nicht angezeigt, wenn ich meine App starte?

import android.content.Context; 
import android.os.SystemClock; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Chronometer; 
import android.widget.LinearLayout; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 
    Chronometer mChronometer; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     LinearLayout layout = new LinearLayout(this); 
     layout.setOrientation(LinearLayout.VERTICAL); 
     layout.isBaselineAligned(); 

     mChronometer = new Chronometer(this); 

     // Set the initial value 
     mChronometer.setText("00:10"); 
     layout.addView(mChronometer); 

     Button startButton = new Button(this); 
     startButton.setText("Start"); 
     startButton.setOnClickListener(mStartListener); 
     layout.addView(startButton); 

     Button stopButton = new Button(this); 
     stopButton.setText("Stop"); 
     stopButton.setOnClickListener(mStopListener); 
     layout.addView(stopButton); 

     Button resetButton = new Button(this); 
     resetButton.setText("Reset"); 
     resetButton.setOnClickListener(mResetListener); 
     layout.addView(resetButton); 

     setContentView(layout); 
    } 

    private void showElapsedTime() { 
     long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase(); 
     Toast.makeText(MainActivity.this, "Elapsed milliseconds: " + elapsedMillis, 
       Toast.LENGTH_SHORT).show(); 
    } 

    View.OnClickListener mStartListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      int stoppedMilliseconds = 0; 

      String chronoText = mChronometer.getText().toString(); 
      String array[] = chronoText.split(":"); 
      if (array.length == 2) { 
       stoppedMilliseconds = Integer.parseInt(array[0]) * 60 * 1000 
         + Integer.parseInt(array[1]) * 1000; 
      } else if (array.length == 3) { 
       stoppedMilliseconds = Integer.parseInt(array[0]) * 60 * 60 * 1000 
         + Integer.parseInt(array[1]) * 60 * 1000 
         + Integer.parseInt(array[2]) * 1000; 
      } 

      mChronometer.setBase(SystemClock.elapsedRealtime() - stoppedMilliseconds); 
      mChronometer.start(); 
     } 
    }; 

    View.OnClickListener mStopListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      mChronometer.stop(); 
      showElapsedTime(); 
     } 
    }; 

    View.OnClickListener mResetListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      mChronometer.setBase(SystemClock.elapsedRealtime()); 
      showElapsedTime(); 
     } 
    }; 
} 

Das Problem ist jedoch, dass, wenn ich meine App starten, alles, was ich in meiner XML-Datei hat, wird nicht auf die angezeigt werden App, alles, was ich sehen kann, ist der Chronometer und seine Knöpfe. Habe ich meine XML-Datei in der Java-Datei oder so ähnlich überschrieben? In meiner XML-Datei verwende ich eine ScrollView als rootView, wenn das irgendwie wichtig ist.

Vielen Dank im Voraus, Julian.

+0

post Ihr Layout xml – SripadRaj

+0

Sie haben schreiben SetContentView (Layout); Zeile, so wird es die aktuelle Ansicht als Layout, das Sie definiert haben, so wird es nicht zeigen die Xml-Datei, die Sie zuvor angegeben haben, um es zu zeigen und dieses Layout in Side-Scroll-Ansicht erst erstellen Instanz von scrollview und dann hinzufügen Layout in Scrollview – Vickyexpert

+0

Wie kann ich ein Layout in scrollView hinzufügen? Muss ich zwei Parameter in die setContentView() - Methode eingeben oder gibt es einen besseren Weg? Danke für die Antwort! – Julian

Antwort

0

Hallo Zunächst einmal in der Klasse Dich hinzufügen (R.layout.activity_main) Ihre Ansicht und am Ende der auf create-Methode wieder werden Sie ein Layout zu Ihrer Ansicht wie folgt ergänzt: setContentView(layout); es so überschreiben Sie Ihre Ansicht .... deshalb ist Ihr Layout nicht sichtbar ..... entfernen Sie diese dynamische Ansicht oder indem Sie ein Layout in Ihrer XML-Datei erstellen, fügen Sie dieses Layout zu dieser Ansicht hinzu, damit es funktioniert ....... hoffe Es wird helfen....;

+0

Ah, ich sehe den Fehler, danke! Wie kann ich diese beiden kombinieren? Oder gibt es einen effektiveren Weg? – Julian

+0

Entschuldigung für die späte Antwort, aber wie in Ihrer Frage, wenn Sie das dynamisch erstellte Layout zu Ihrem Scrollview hinzufügen möchten, dann erstellen Sie ein Linearlayout/Relative Layout und dann erstellen Sie die Instanz dieses Layouts und Ihre dynamische Ansicht zu diesem Layout .. dann sind Sie fertig [email protected] –

Verwandte Themen