不幸的是,“申请”已经停止(Unfortunately, “application” has stopped)

编程入门 行业动态 更新时间:2024-10-27 02:17:32
不幸的是,“申请”已经停止(Unfortunately, “application” has stopped)

我正在使用包含菜单Home,Hospital,Doctors和Restaurant的导航栏,并使用Fragment将一个移动到其他片段但是当点击Doctor菜单时,应用程序停止了。

MainActivity.java

public class MainActivity extends AppCompatActivity { Toolbar toolbar; DrawerLayout drawerLayout; ActionBarDrawerToggle actionBarDrawerToggle; FragmentTransaction fragmentTransaction; NavigationView navigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar=(Toolbar)findViewById(R.id.toolbar); setSupportActionBar(toolbar); drawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout); actionBarDrawerToggle=new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.drawer_open,R.string.drawer_close); fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.main_container,new BlankFragment()); fragmentTransaction.commit(); getSupportActionBar().setTitle("GApp"); navigationView=(NavigationView)findViewById(R.id.navigation_view); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.home: fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_container,new BlankFragment()); fragmentTransaction.commit(); getSupportActionBar().setTitle("Home"); item.setChecked(true); drawerLayout.closeDrawers(); break; case R.id.hospital: fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_container,new HospitalFragment()); fragmentTransaction.commit(); getSupportActionBar().setTitle("Hospitals"); item.setChecked(true); drawerLayout.closeDrawers(); break; case R.id.doctor: fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_container,new DoctorFragment()); fragmentTransaction.commit(); getSupportActionBar().setTitle("Doctors"); item.setChecked(true); drawerLayout.closeDrawers(); break; case R.id.restaurent: fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_container,new restaurent()); fragmentTransaction.commit(); getSupportActionBar().setTitle("Restaurents"); item.setChecked(true); drawerLayout.closeDrawers(); break; } return true; } }); drawerLayout.addDrawerListener(actionBarDrawerToggle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); actionBarDrawerToggle.syncState(); } }

DoctorFragment.java

public class DoctorFragment extends Fragment { ListView listView; String[] doctors={"Physician","Child Specialist","Dentist","Neurologist"}; public DoctorFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { listView=(ListView)getActivity().findViewById(R.id.listview); ArrayAdapter adapter=new ArrayAdapter<String>(getActivity(),R.layout.list_view_custom_layout,doctors); listView.setAdapter(adapter); // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_doctor, container, false); } }

那么,这是你的布局吗?

<FrameLayout xmlns:android="schemas.android.com/apk/res/android" xmlns:tools="schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.nk.gapp.DoctorFragment"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </FrameLayout>

I'm using Navigation Bar which contains menu Home, Hospital, Doctors and Restaurant and use Fragment to move one to other fragment but when click on Doctor menu application has stopped.

MainActivity.java

public class MainActivity extends AppCompatActivity { Toolbar toolbar; DrawerLayout drawerLayout; ActionBarDrawerToggle actionBarDrawerToggle; FragmentTransaction fragmentTransaction; NavigationView navigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar=(Toolbar)findViewById(R.id.toolbar); setSupportActionBar(toolbar); drawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout); actionBarDrawerToggle=new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.drawer_open,R.string.drawer_close); fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.main_container,new BlankFragment()); fragmentTransaction.commit(); getSupportActionBar().setTitle("GApp"); navigationView=(NavigationView)findViewById(R.id.navigation_view); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.home: fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_container,new BlankFragment()); fragmentTransaction.commit(); getSupportActionBar().setTitle("Home"); item.setChecked(true); drawerLayout.closeDrawers(); break; case R.id.hospital: fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_container,new HospitalFragment()); fragmentTransaction.commit(); getSupportActionBar().setTitle("Hospitals"); item.setChecked(true); drawerLayout.closeDrawers(); break; case R.id.doctor: fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_container,new DoctorFragment()); fragmentTransaction.commit(); getSupportActionBar().setTitle("Doctors"); item.setChecked(true); drawerLayout.closeDrawers(); break; case R.id.restaurent: fragmentTransaction=getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.main_container,new restaurent()); fragmentTransaction.commit(); getSupportActionBar().setTitle("Restaurents"); item.setChecked(true); drawerLayout.closeDrawers(); break; } return true; } }); drawerLayout.addDrawerListener(actionBarDrawerToggle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); actionBarDrawerToggle.syncState(); } }

DoctorFragment.java

public class DoctorFragment extends Fragment { ListView listView; String[] doctors={"Physician","Child Specialist","Dentist","Neurologist"}; public DoctorFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { listView=(ListView)getActivity().findViewById(R.id.listview); ArrayAdapter adapter=new ArrayAdapter<String>(getActivity(),R.layout.list_view_custom_layout,doctors); listView.setAdapter(adapter); // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_doctor, container, false); } }

So, is this your layout?

<FrameLayout xmlns:android="schemas.android.com/apk/res/android" xmlns:tools="schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.nk.gapp.DoctorFragment"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </FrameLayout>

最满意答案

尝试对您的片段进行此更改:由于您尚未共享logcat,因此很难指出真正的原因:首先膨胀您的视图,然后按ID查找listview,像往常一样设置适配器,然后最终返回视图。

public class DoctorFragment extends Fragment { ListView listView; String[] doctors={"Physician","Child Specialist","Dentist","Neurologist"}; public DoctorFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_doctor, container, false); listView = (ListView)view.findViewById(R.id.listview); ArrayAdapter adapter=new ArrayAdapter<String>(getActivity(),R.layout.list_view_custom_layout,doctors); listView.setAdapter(adapter); return view; } }

Try this change to your fragment: since you have not shared the logcat, it is hard to point to the real cause: Inflate your view first, then find the listview by id, set adapter as usual and then finally return the view.

public class DoctorFragment extends Fragment { ListView listView; String[] doctors={"Physician","Child Specialist","Dentist","Neurologist"}; public DoctorFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_doctor, container, false); listView = (ListView)view.findViewById(R.id.listview); ArrayAdapter adapter=new ArrayAdapter<String>(getActivity(),R.layout.list_view_custom_layout,doctors); listView.setAdapter(adapter); return view; } }

更多推荐

本文发布于:2023-07-19 02:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1171549.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:的是   不幸   stopped   application

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!