[Android]Toast.makeText()报错

今天在写Android时,发现一个错误,
`package com.example.a1104.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button1 = (Button)findViewById(R.id.button_1);
    button1.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Toast.makeText(this,"you clicked button1",Toast.LENGTH_SHORT).show();

        }
    });

}

}`
错误提示:
Cannot resolve method 'makeText(anonymous android.view.View.OnClickListener, java.lang.String, int)'

在stackoverflow上找到答案:
原因是: Toast.makeText()的第一个参数,需要时Application Context,即需要的是整个Activity,而我的代码中的“this”确是代表一个”Button“,因此报错。

Because, Toast.makeText() first argument required Application Context and in your code, this reefers to Button’s onClickListener class not a context of Activity.

改正: 把this改成整个Activity即可,

Toast.makeText(MainActivity.this ,"you clicked button1",Toast.LENGTH_SHORT).show();
//其中MainActivity 是activity的名字,用.java处的名字。
2025-03-16 15:34:36.147 6983-6983/com.example.nfc E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.nfc, PID: 6983 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference at android.widget.Toast.<init>(Toast.java:167) at android.widget.Toast.makeText(Toast.java:492) at android.widget.Toast.makeText(Toast.java:480) at utils.ToastUtils.showShort(ToastUtils.java:30) at utils.NfcUtils.check(NfcUtils.java:50) at utils.NfcUtils.<init>(NfcUtils.java:42) at com.example.nfc.insert_dataFragment.onCreateView(insert_dataFragment.java:118) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 这个Android studio中的报错是什么意思,怎么修改
03-17
代码报错: java.lang.UnsupportedOperationException: remove,代码如下:package com.example.myapplication; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.util.Arrays; import java.util.List; public class DetailActivity extends AppCompatActivity { String flag=""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); TextView name=(TextView)findViewById(R.id.name); TextView phone=(TextView) findViewById(R.id.phone); Button common_used=(Button)findViewById(R.id.common_used); Button back=(Button)findViewById(R.id.back); Intent intent=getIntent(); String user_name="姓名:"+intent.getStringExtra("name"); String user_phone="手机号码:"+intent.getStringExtra("number"); String position=intent.getStringExtra("position"); name.setText(user_name); phone.setText(user_phone); common_used.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //存入 SharedPreferences sharedPreferences=getSharedPreferences("people",MODE_PRIVATE); SharedPreferences.Editor editor=sharedPreferences.edit(); editor.putString("Isstar",""); String FirstPosition=sharedPreferences.getString("Isstar",""); List<String> result = Arrays.asList(FirstPosition.split(",")); if(result.contains(position)){//点击前位置是星 flag="unused"; while (result.contains(position)) { result.remove(position); } String newIsstar=String.join(",",result); editor.putString("Isstar",newIsstar); Toast.makeText(DetailActivity.this,"删除此重点联系人", Toast.LENGTH_SHORT).show(); Toast.makeText(DetailActivity.this,newIsstar, Toast.LENGTH_SHORT).show(); // Log.i("新号","星号有:"+newIsstar); } else{ editor.putString("Isstar",FirstPosition+","+position); Toast.makeText(DetailActivity.this,"添加为重点联系人", Toast.LENGTH_SHORT).show(); flag="used"; String ceshi=sharedPreferences.getString("Isstar",""); Toast.makeText(DetailActivity.this,ceshi, Toast.LENGTH_SHORT).show(); } editor.commit(); } }); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent_back=new Intent(DetailActivity.this,PhoneActivity.class); intent_back.putExtra("position",position); // Toast.makeText(DetailActivity.this,String.valueOf(position), Toast.LENGTH_SHORT).show(); intent_back.putExtra("flag",flag); // setResult(RESULT_OK,intent_back); // finish(); startActivity(intent_back); } }); } }
07-13
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值