【问题标题】:Application Stop after click on ListView单击 ListView 后应用程序停止
【发布时间】:2017-05-03 15:33:44
【问题描述】:

我想单击列表视图并更新所选记录。但是当我点击列表时,我的应用程序停止工作..

这是我的适配器代码,

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent intent = new Intent(ViewAllBills.this, ViewBills.class);
        HashMap<String,String> map =(HashMap)parent.getItemAtPosition(position);
        String billId = map.get(Config.TAG_ID).toString();
        intent.putExtra(Config.BILL_ID,billId);
        startActivity(intent);
    }

这段代码有什么问题吗?

其实我还是 android 编程新手,并不太了解它。这是我单击列表视图后的 LogCat,应用程序停止工作...这是什么意思?

com.example.Dino.dino E/AndroidRuntime: FATAL EXCEPTION: main

进程:com.example.Dino.dino,PID:3280 java.lang.IllegalStateException:在视图类 android.widget.LinearLayout 上定义的 android:onClick 属性的父或祖先上下文中找不到方法 click(View) 在 android.view.View$DeclaredOnClickListener.resolveMethod(View.java:4532) 在 android.view.View$DeclaredOnClickListener.onClick(View.java:4496) 在 android.view.View.performClick(View.java:5265) 在 android.view.View$PerformClick.run(View.java:21534) 在 android.os.Handler.handleCallback(Handler.java:815) 在 android.os.Handler.dispatchMessage(Handler.java:104) 在 android.os.Looper.loop(Looper.java:207) 在 android.app.ActivityThread.main(ActivityThread.java:5728) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

【问题讨论】:

标签: android listview android-adapter


【解决方案1】:

阅读错误消息,您的布局文件中有一条语句 android:onclick="click",但 click(View) 在您的 Activity/Fragment 中没有定义。您需要提供此方法。

【讨论】:

    【解决方案2】:

    android:onclick="click" remove this line in your xml.

    【讨论】:

      【解决方案3】:

      您的活动应该像这样开始使用此方法。并删除您在 XML 文件中使用的任何 onclick 并清理并重新运行您的应用程序:

      public class MainActivity extends Activity implements OnItemClickListener{
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      }}
      

      首先将您的项目添加到 String 中,然后添加到您的 hashmap 中。

        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  String data = (String) parent.getItemAtPosition(position);
      
       HashMap<Integer, List<String>> map = new HashMap<>();
      List<String> list = new ArrayList<>();
      list.add(data);
      map.put(1, list);
      });}
      

      【讨论】:

        【解决方案4】:

        试试

        1. 在 ViewBills 中实现 View.OnClickListener 之类的

        ViewBills implements View.OnClickListener
        

        2.覆盖onClick方法

        @Override 
        public void onClick(View v) {
         //handle click
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-29
          • 2013-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多