有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAlang.NullPointerException:尝试调用虚拟方法“安卓”。看法查看安卓。应用程序。活动空对象引用上的findViewById(int)“”

我的Android项目总是出错

java.lang.NullPointerException: Attempt to invoke virtual method '安卓.view.View 安卓.app.Activity.findViewById(int)' on a null object reference

在我的主要活动中,我称这个类为FragmentStart

碎片开始。班级

import 安卓.app.Activity; import 安卓.content.Intent; import 安卓.os.Bundle; import 安卓.support.v4.app.Fragment; import 安卓.view.LayoutInflater; import 安卓.view.View; import 安卓.view.ViewGroup; import 安卓.widget.AdapterView; import 安卓.widget.ArrayAdapter; import 安卓.widget.Button; import 安卓.widget.ListView; public class FragmentStart extends Fragment { //Define Listview private ListView startList; private String[] stringList; Activity activity = getActivity(); public FragmentStart() { // } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_start, container, false); // Create ListView start startList = (ListView) rootView.findViewById(R.id.startList); stringList = getResources().getStringArray(R.array.startList); if (activity != null) { ArrayAdapter<String> objAdapter = new ArrayAdapter<String>(activity, 安卓.R.layout.simple_list_item_1, stringList); startList.setAdapter(objAdapter); startList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (startList.getPositionForView(view)) { case 0: // ... break; } } }); } // Create ListView end //New Entry Button add = (Button) activity.findViewById(R.id.add); add.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent myIntent = new Intent(view.getContext(), addItem.class); startActivityForResult(myIntent, 0); } }); return rootView; } }

共 (4) 个答案

  1. # 1 楼答案

    出现此错误的原因是,在片段具有父活动之前,将getActivity()赋值给活动变量。如果愿意,您可以在onAttach()中完成

  2. # 2 楼答案

    It's very simple

    public class MainActivity extends AppCompatActivity {
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button btn1 = (Button) findViewById(R.id.button1);
    
            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                  Intent intent = new Intent(MainActivity.this, YourNextClass.class);
                    startActivity(intent);
                }
            });
    
        }
    }
    
  3. # 3 楼答案

    使用以下代码:

     listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
           //     selectedPosition = position;
    
                View newTypeView=listView1.getChildAt(position-listView1.getFirstVisiblePosition()).findViewById(R.id.RelativeLayout);
    
                if (newTypeView.getClass().getName().toString().contains("RelativeLayout")) {
    
    
                    if (lastTouchedVw != null)
                        lastTouchedVw.setBackgroundColor(Color.parseColor("#ffffff"));
                     // mainImageView.setImageURI(Uri.parse(al.get(position).toString()));
                    //bigImageRelativeLayoutVw.setBackgroundColor(Color.parseColor("#ffb000"));
                        newTypeView.setBackgroundResource(R.drawable.cellbg);
    
                        lastTouchedVw = newTypeView;
                }
    
  4. # 4 楼答案

    除了@Selvin指出的以外,它看起来是这样的:

    Button add = (Button) activity.findViewById(R.id.add);
    

    。。。应改为:

    Button add = (Button) rootView.findViewById(R.id.add);