Ich frage mich, wenn während eines Lebenszyklus Aktivitäten Blick wird verlegt beginnen, oder vielleicht, wenn ein Viewgroup seine Zeit, sich um das Layout entscheidet.Wann ist ein Vorgang Layout Es ist Ansichten
Ich habe eine Klasse und Aktivität wie diese aufgebaut ->
public class MainActivity extends AppCompatActivity
{
protected void onCreate(Bundle savedInstanceState)
{
Log.i("i", "on Create");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myStack = (myStack) findViewById(R.id.myStack);
myStack.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
Log.i("i", "listener detected Layout");
}
}
myStackAdapter adapter = new myStackAdapter(dataset);
myStack.setAdapter(adapter);
}
protected void onStart()
{
Log.i("i", "on Start");
super.onStart();
}
}
public class myStack extends ViewGroup
{
public myStack(Context context, AttributeSet attrs, int defStyleAttr)
{
super(context, attrs, defStyleAttr);
initialize();
}
public void initialize()
{
Log.i("i", "initialize called");
}
public void onLayout(boolean changed, int l, int t, int r, int b)
{
Log.i("i", "on Layout");
if (adapter == null)
{
Log.i("i", "adapter is null");
return;
}
for (conditions)
{
addNextView();
}
}
public void setAdapter(Adapter adapter)
{
Log.i("i", "adapter set");
this.adapter = adapter;
}
Der Ausgang ist als
folgt- initialize genannt
- Adapter-Set
- auf Layout-
Bearbeiten: hinzugefügt mehr c hecks, Ausgabe ist -on Create, -initialisiert aufgerufen, -adapter gesetzt, -on Start, -auf Layout, -listenerfasst Layout
Allerdings bedeutet dies, dass onLayout nur aufgerufen wird, nachdem setAdapter aufgerufen wurde die MainActivity, da mein Adapter standardmäßig Null ist. Ich frage mich also, wann OnLayout zum ersten Mal ausgelöst wird. Ist es nach onCreate in der MainActivity beendet (vielleicht während onStart)? oder sonst gibt es einen anderen Grund, warum onLayout (nach onMeasure) nicht das erste Ding sein würde, das wenn myStack instanziiert wird.
, wenn Sie anrufen 'setContentView()'. –
@Zamrony Wenn das aber der Fall wäre dann wäre die Ausgabe nicht "auf Layout -> Adapter ist Null -> initialisiert -> Adaptersatz"? –
[Warum getWidth() auf einem Blick in onResume hat() aufrufen return 0?] (Https://stackoverflow.com/q/22972022/3290339) – Onik