Не уверен, что мне здесь не хватает, но я создаю фрагмент и добавляю его с помощью FragmentManager. Вскоре после этого я запускаю метод из этого фрагмента, который должен загружать предоставленную информацию (объект Tool) в макет.onCreateView не вызывается перед запуском метода фрагментов
В InfoActivity.java:
public class InfoActivity extends AppCompatActivity{
...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCatIndex = getIntent().getExtras().getInt("catIndex", 0);
mToolIndex = getIntent().getExtras().getInt("toolIndex", 0);
// If we are in two-pane layout mode, this activity is no longer necessary
if (getResources().getBoolean(R.bool.has_two_panes)) {
finish();
return;
}
// Place an InfoFragment as our content pane
InfoFragment f = new InfoFragment();
getSupportFragmentManager().beginTransaction().add(android.R.id.content, f).commit();
// Display the correct tool info on the fragment
Tool tool = ToolsSource.getInstance(this).getCategory(mCatIndex).getTool(mToolIndex);
f.displayTool(tool);
}
}
Однако объекты макета не инициализируются, потому что как-то метод работает до создания представления.
package com.anothergamedesigner.listviewtest;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class InfoFragment extends Fragment {
private TextView mTitle;
private TextView mSubtitle;
private TextView mDescription;
//Tool to be displayed
Tool mTool = null;
//Parameterless constructor needed for framework
public InfoFragment(){
super();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.info_layout, container, false);
mTitle = (TextView) view.findViewById(R.id.title);
mSubtitle = (TextView) view.findViewById(R.id.subtitle);
mDescription = (TextView) view.findViewById(R.id.description);
loadView();
return view;
}
public void displayTool(Tool t){
mTool = t;
loadView();
}
private void loadView(){
if(mTool != null) {
System.out.println(mTitle.getText()); <----- error here so it's for sure the TextView returning null.
System.out.println(mTool.getTitleTxt());
mTitle.setText(mTool.getTitleTxt());
mSubtitle.setText(mTool.getSubtitleTxt());
mDescription.setText(mTool.getDescriptionTxt());
}
}
}
Почему бы вам не позвонить displayTool в конце onCreateView? –
Я должен уточнить, первый бит был из другого класса InfoActivity не из того же класса. Для пояснения я редактировал декларацию класса. – NappyXIII
Где находится 'setContentView' Activity? –