《第一行代码Android》笔记九:MainActivity不是抽象的,并且未覆盖OnClickListener中的抽象方法onClick(查看)

在练习《第一行代码Android》实例时,出现MainActivity不是抽象的且未覆盖OnClickListener中抽象方法onClick的错误。文中给出两种解决方法,一是删掉导包语句import android.view.View.OnClickListener。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误:(15,8)错误:MainActivity不是抽象的,并且未覆盖OnClickListener中的抽象方法onClick(查看)

在练习书本实例时,出现以上错误,实例代码如下:

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

三十

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

package com.example.myapplication;<font></font>

<font></font>

import android.content.DialogInterface;<font></font>

import android.app.Activity;<font></font>

import android.os.Bundle;<font></font>

import android.util.Log;<font></font>

import android.view.Menu;<font></font>

import android.view.MenuItem;<font></font>

import android.view.View;<font></font>

import android.view.View.OnClickListener;<font></font>

import android.widget.Button;<font></font>

import android.widget.Toast;<font></font>

<font></font>

<font></font>

public class MainActivity extends Activity implements OnClickListener {<font></font>

    private Button mybutton;<font></font>

    @Override<font></font>

    protected void onCreate(Bundle savedInstanceState) {<font></font>

<font></font>

        super.onCreate(savedInstanceState);<font></font>

        setContentView(R.layout.activity_main);<font></font>

        //匿名内部显示类的实现<font></font>

        //1初始化当前所需控件<font></font>

        /*<font></font>

        * findViewById----返回的是View的对象<font></font>

        * */<font></font>

        mybutton=(Button)findViewById(R.id.button);<font></font>

        //监听事件通过匿名内部类<font></font>

       /* mybutton.setOnClickListener(new View.OnClickListener() {<font></font>

            @Override<font></font>

            public void onClick(View v) {<font></font>

<font></font>

                Toast.makeText(MainActivity.this,"没看到提示吗,你好无聊",Toast.LENGTH_LONG).show();<font></font>

            }<font></font>

        });*/<font></font>

        mybutton.setOnClickListener(new MyOnClickListener(){<font></font>

            @Override<font></font>

            public void onClick(View v) {<font></font>

                //调用父类MyOnClickListener的方法onClick<font></font>

                super.onClick(v);<font></font>

                Toast.makeText(MainActivity.this,"哈喽",1).show();<font></font>

            }<font></font>

        });<font></font>

<font></font>

    }<font></font>

<font></font>

    @Override<font></font>

    public boolean onCreateOptionsMenu(Menu menu) {<font></font>

        // Inflate the menu; this adds items to the action bar if it is present.<font></font>

        getMenuInflater().inflate(R.menu.menu_main, menu);<font></font>

        return true;<font></font>

    }<font></font>

<font></font>

    @Override<font></font>

    public boolean onOptionsItemSelected(MenuItem item) {<font></font>

        // Handle action bar item clicks here. The action bar will<font></font>

        // automatically handle clicks on the Home/Up button, so long<font></font>

        // as you specify a parent activity in AndroidManifest.xml.<font></font>

        int id = item.getItemId();<font></font>

<font></font>

        //noinspection SimplifiableIfStatement<font></font>

        if (id == R.id.action_settings) {<font></font>

            return true;<font></font>

        }<font></font>

<font></font>

        return super.onOptionsItemSelected(item);<font></font>

    }<font></font>

}<font></font>

<font></font>

class MyOnClickListener implements OnClickListener{<font></font>

    public  void onClick(View v){<font></font>

        Log.i("tog","父类的onclick事件");<font></font>

    }<font></font>

<font></font>

}

 

方法一:

导包错了,把这一行删掉import android.view.View.OnClickListener;

方法二:

包com.gloiot.hygo.ui.activity.my.qianbao; 

import android.content.Intent; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.RelativeLayout; 

import com.gloiot.hygo.R; 
import com.gloiot.hygo.ui.BaseActivity; 

import java.util.ArrayList; 
import java.util.List; 

import butterknife.Bind; 
import butterknife.OnClick; 

import static com.gloiot.hygo.R.id.viewPager; 


公共类JifenQianbaoActivity扩展了BaseActivity { 
   @Bind(R.id.rl_hlzh)
   RelativeLayout rlhlzh;
   @Bind(R.id.rl_jfzh)
   RelativeLayout rljfzh; 
   @Bind(R.id.rl_jfczh)
   RelativeLayout rljfczh; 
   @Bind(R.id.rl_jfzr)
   RelativeLayout rljfzr; 
   @Bind(R.id.rl_hltq)
   RelativeLayout rlhltx; 
// @Bind(R.id.viewpager)
// ViewPager viewpager; 


// private View view1,view2,view3; 
// 
// private List <View> viewList; 

   @覆盖
   公众诠释initResource(){ 

       返回R.layout.activity_jifen_qianbao; 
   } 
// 
// 
@Override // public void initData(){ 
// 
// viewPager =(ViewPager)findViewById(R.id.vviewpager); 
//
// LayoutInflater inflater = getLayoutInflater(); 
// view1 = inflater.inflate(R.layout.tab_jifenqianbao1,null); 
// view2 = inflater.inflate(R.layout.tab_jifenqianbao2,null); 
// view3 = inflater.inflate(R.layout.tab_jifenqianbao3,null); 
// 
// viewList = new ArrayList <View>(); 
// viewList.add(view1); 
// viewList.add(view2); 
// viewList.add(view3); 
// 
// PagerAdapter pagerAdapter = new PagerAdapter(){ 
// @Override 
// public int getCount(){ 
// return viewList.size(); 
//} 
// 
// @Override
// public boolean isViewFromObject(View arg0,Object arg1){ 
// return arg0 == arg1; 
//} 
// @Override 
// public void destroyItem(ViewGroup容器,int position,
// Object object){ 
// // TODO自动生成的方法stub 
// container.removeView(viewList.get(position)); 
//} 
// 
// @Override 
// public Object instantiateItem(ViewGroup container,int position){ 
// // TODO自动生成的方法stub 
// container.addView(viewList.get(position)); 
// 
//
//返回viewList.get(position); 
//} 
//}; 
// 
// 
// viewPager.setAdapter(pagerAdapter); 
// 
//} 
   @OnClick({R.id.rl_hlzh,R.id.rl_jfzh,R.id.rl_jfczh,R.id.rl_jfzr,R.id.rl_hltq})

   public void onClick(View view){ 
       Intent intent ; 
       switch(view.getId()){ 
           case R.id.rl_hlzh:
               startActivity(new Intent(JifenQianbaoActivity.this,HongLiJiBenActivity.class)); 
               打破; 
           case R.id.rl_jfzh:
               intent = new Intent(mContext,HongLiJiBenActivity.class); 
               intent.putExtra(“type”,“基本积分”);
               startActivity(意向); 
               打破; 
           case R.id.rl_jfczh:
               startActivity(new Intent(JifenQianbaoActivity.this,JiFenChongZhiActivity.class)); 
               打破; 
           case R.id.rl_jfzr:
               startActivity(new Intent(JifenQianbaoActivity.this,ZhuanrangJifenActivity.class)); 
               打破; 
           case R.id.rl_hltq:
               startActivity(new Intent(JifenQianbaoActivity.this,HLTiXianLeiBieActivity.class)); 
               打破; 

       } 

   }

 

这段代码是写在一个Android应用程序的Activity或Fragment中的,用于将用户输入的笔记数据插入到本地数据库中。下面是一个简单的例子: 1. 创建一个名为Note的实体类,表示笔记的数据模型 ```java @Entity(tableName = "notes") public class Note { @PrimaryKey(autoGenerate = true) private int id; @ColumnInfo(name = "title") private String title; @ColumnInfo(name = "content") private String content; @ColumnInfo(name = "image_path") private String imagePath; // getter 和 setter 方法省略 } ``` 2. 创建一个名为NoteDatabase的抽象类,用于定义本地数据库的结构和操作方法 ```java @Database(entities = {Note.class}, version = 1) public abstract class NoteDatabase extends RoomDatabase { private static final String DATABASE_NAME = "note_database"; private static NoteDatabase instance; public abstract NoteDao getNoteDao(); public static synchronized NoteDatabase getInstance(Context context) { if (instance == null) { instance = Room.databaseBuilder(context.getApplicationContext(), NoteDatabase.class, DATABASE_NAME) .fallbackToDestructiveMigration() .build(); } return instance; } } ``` 3. 创建一个名为NoteDao的接口,用于定义对笔记数据的CRUD操作方法 ```java @Dao public interface NoteDao { @Insert void insert(Note note); @Update void update(Note note); @Delete void delete(Note note); @Query("DELETE FROM notes") void deleteAllNotes(); @Query("SELECT * FROM notes ORDER BY id DESC") LiveData<List<Note>> getAllNotes(); } ``` 4. 在Activity或Fragment中调用上述代码保存笔记数据 ```java public class MainActivity extends AppCompatActivity { private EditText titleEditText; private EditText contentEditText; private Button saveButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); titleEditText = findViewById(R.id.titleEditText); contentEditText = findViewById(R.id.contentEditText); saveButton = findViewById(R.id.saveButton); saveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String title = titleEditText.getText().toString(); String content = contentEditText.getText().toString(); String imagePath = "/path/to/image"; // 图片路径,可以为空 NoteDao noteDao = NoteDatabase.getInstance(MainActivity.this).getNoteDao(); Note note = new Note(); note.setTitle(title); note.setContent(content); note.setImagePath(imagePath); noteDao.insert(note); Toast.makeText(MainActivity.this, "笔记已保存", Toast.LENGTH_SHORT).show(); } }); } } ``` 上述代码会在用户点击“保存”按钮时,将输入的标题、内容和图片路径保存到本地数据库中。需要注意的是,这里的保存操作是异步执行的,如果需要获取保存后的笔记列表,可以使用LiveData或RxJava等框架来监听数据库变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值