2017-08-24 37 views
-1

我的页面是活动页面,现在我想改变片段,但它坠毁,为什么我变成碎片,应用程序崩溃

造成的:java.lang.ClassCastException:com.mac。活动不能投射到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

确保你正在传递bundle到这个意图,因为你正试图访问NAME_KEY。把你的崩溃日志放在这里。 –

+1

引起:java.lang.ClassCastException:com.mac.Activity不能转换为android.app.Activity –

回答

-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(); 
     } 
     }); 
     } 
+0

这是完全相同的代码,只是写它的一种不同的方法。请参阅上述有关实际问题的注释 –

+0

这种方法更好,因为它确保视图可以使用。当您尝试访问尚未放置的视图时,它可能会崩溃。 –

+0

我从来没有遇到'最终视图视图= inflater.inflate'“还没有奠定”的实例 –

0

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

相关问题