我在将一个片段添加到活动时遇到了麻烦 .
当我以横向模式打开应用程序时,片段正常工作并显示列表旁边的信息 . 但是当我尝试以纵向模式显示信息时,应用程序会启动一个新活动,但不会显示该片段 .
使用片段打开的活动为空 . 应用程序甚至没有进入onCreateView函数,因为从未执行过Log.d(TAG,“onCreateView:ciao”) .
这是Java代码:
public class ActivityMain扩展AppCompatActivity {private static final String TAG =“ActivityMain”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate: started");
LeftFragment leftFragment = new LeftFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.mainLayout, leftFragment).commit();
}
}
public class LeftFragment extends Fragment {
private static final String TAG = "LeftFragment";
public LeftFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "onCreateView: ciao");
View view = inflater.inflate(R.layout.frag, container, false);
ListView listView = (ListView) view.findViewById(R.id.list2);
/* 100 Zufallszahlen in ArrayList "names" schreiben */
Random rand = new Random();
int n = rand.nextInt(200)+1;
for(int i = 0; i <= 100; i++)
{
n = rand.nextInt(200)+1;
DataContainer.names.add(Integer.toString(n));
}
/* Arrayadapter initialisieren, der Adapter holt sich seine Daten aus der ihm zugewiesenen Liste "names"
die listview bekommt einen Adapter zugewiesen, der sie mit den Daten aus der Liste versorgt
*/
ArrayAdapter adapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, DataContainer.names);
listView.setAdapter(adapter);
/* Onclick Listener für die Listenelemente */
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedData = DataContainer.names.get(position);
DetailsFragment detailsFragment = new DetailsFragment();
Bundle bundle = new Bundle();
bundle.putString("selected_data", selectedData);
detailsFragment.setArguments(bundle);
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Intent intent;
intent = new Intent(getActivity(), Activity_second.class);
Log.w(TAG, "onItemClick: " + intent);
intent.putExtra("selected_data", selectedData);
startActivity(intent);
}
else
{
FragmentManager manager = getFragmentManager();
manager.beginTransaction().replace(R.id.detailLayout, detailsFragment).commit();
}
}
});
return view;
}
public static class DataContainer{
static ArrayList<String> names = new ArrayList<>();
//static ArrayList<String> details = new ArrayList<>();
}
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_details, container, false);
TextView TextDetailHeadline = (TextView)view.findViewById(R.id.TextDetailHeadline);
TextView TextDetails = (TextView)view.findViewById(R.id.TextDetails);
Bundle bundle = getArguments();
if(bundle != null) {
if (bundle.getString("selected_data") != null){
TextDetailHeadline.setText(bundle.getString("selected_data"));
TextDetails.setText(bundle.getString("selected_data"));
}
}
return view;
}
}
public class Activity_second extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
FragmentManager manager = getSupportFragmentManager();
DetailsFragment detailsFragment = new DetailsFragment();
detailsFragment.setArguments(getIntent().getExtras());
manager.beginTransaction().replace(R.id.detailLayout, detailsFragment).commit();
}
}
我自己发现错误:我的Activity_Second链接到错误的XML文件:
setContentView(R.layout.activity_details);
..Yikes