为什么我更改为片段,应用程序崩溃

时间:2017-08-24 01:40:56

标签: java android

我的页面是活动页面,现在我想更改为片段,但它已崩溃,

  

引起:java.lang.ClassCastException:com.mac.Activity无法强制转换为android.app.Activity

我不知道哪部分代码崩溃了。所以我把我的代码放在下面。

代码:

public class Activity extends Fragment {


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    final View view = inflater.inflate(R.layout.activity, container, false);

    final TextView nameTxt = (TextView) view.findViewById(R.id.nameTxtDetail);
    final TextView descTxt = (TextView) view.findViewById(R.id.descDetailTxt);

    final Button btn = (Button) view.findViewById(R.id.btn);
    //RECEIVE
    Intent i = getActivity().getIntent();
    String name = i.getExtras().getString("NAME_KEY");
    String desc = i.getExtras().getString("DESCRIPTION_KEY");

    //BIND
    nameTxt.setText(name);
    descTxt.setText(desc);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    getContext());
            alertDialogBuilder.setTitle("Do you want to login?");

            // set dialog message
            alertDialogBuilder
                    .setCancelable(false)
                    .setNeutralButton("YES", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            Intent i = new Intent(getActivity(), FacebookLogin.class);
                            startActivity(i);

                        }

                    })
                    .setPositiveButton("NO", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // if this button is clicked, close
                            // current activity
                            dialog.cancel();
                        }
                    });


            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();


        }
    });
    return view;
}


@Override
public void onResume() {
    super.onResume();
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
    TextView toolbar_title = (TextView) getActivity().findViewById(R.id.toolbar_title);
    toolbar_title.setText("DETAIL");

}

@Override
public void onStop() {
    super.onStop();
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
    ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(false);
}

}

首先我虽然崩溃了,因为忘记了最后的textview和按钮,但我现在已经放,仍然崩溃。我正在使用android studio。希望有人帮助谢谢。

2 个答案:

答案 0 :(得分:0)

这里有很多因素可能导致这种情况。但首先是你从Android Manifest中删除它,因为Android Manifest中没有显示片段,如果你没有,它会尝试将它作为一个活动打开。

答案 1 :(得分:-2)

覆盖另一种方法 onViewCreated()。获取您在 onCreateView()中输入的所有代码,但第一行膨胀除外,将它们放入 onViewCreated()。这样您就可以确定视图已经创建并可以使用了。

        @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
        return inflater.inflate(R.layout.activity, container, false); 
        }

        @Override
        public void onViewCreated (View view, Bundle savedInstanceState){
super.onViewCreated (view, savedInstanceState);
        final TextView nameTxt = (TextView) view.findViewById(R.id.nameTxtDetail);
         final TextView descTxt = (TextView) view.findViewById(R.id.descDetailTxt);
         final Button btn = (Button) view.findViewById(R.id.btn); 

        //RECEIVE 
        Intent i = getActivity().getIntent(); 
        String name = i.getExtras().getString("NAME_KEY");
         String desc = i.getExtras().getString("DESCRIPTION_KEY"); 

        //BIND
         nameTxt.setText(name);
         descTxt.setText(desc);
         btn.setOnClickListener(new View.OnClickListener() { 
        @Override 
    public void onClick(View view) { 
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( getContext());
         alertDialogBuilder.setTitle("Do you want to login?"); 
        // set dialog message alertDialogBuilder .setCancelable(false)
         .setNeutralButton("YES", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) { 
        Intent i = new Intent(getActivity(), FacebookLogin.class); startActivity(i); 
        } 
        })
         .setPositiveButton("NO", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) { 
        // if this button is clicked, close //
         current activity dialog.cancel(); 
        }
         }); 

        // create alert dialog
         AlertDialog alertDialog = alertDialogBuilder.create(); 
        // show it alertDialog.show(); 
        }
         });
        }