android 开发中一些需要注意的小细节

1.4种点击事件方式的优先级

内部类方式 = 匿名内部类 = 实现接口方式 > layout配置android:onclick自定义方法

//内部类方式
public class MainActivity extends AppCompatActivity {
  private Button btn;
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(new Listener());
  }
  class Listener implements View.OnClickListener{
    @Override
    public void onClick(View v) {
      Toast.makeText(MainActivity.this,"内部类方式",Toast.LENGTH_LONG).show();
    }
  }
}
//匿名内部类
public class MainActivity extends AppCompatActivity {
  private Button btn;
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick(View v) {
        Toast.makeText(MainActivity.this,"匿名内部类",Toast.LENGTH_LONG).show();
      }
    });
  }
}
//实现接口方式
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  private Button btn;
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(this);
  }
  public void onClick(View v) {
    Toast.makeText(MainActivity.this,"实现接口方式",Toast.LENGTH_LONG).show();
  }
}
//layout配置android:onclick自定义方法
//xml中设置属性android:onclick,配置自定义方法,比如btnClck
//android:onClick="tvOnclick"
public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  public void btnClick(View v){
    Toast.makeText(MainActivity.this,"layout配置自定义方法",Toast.LENGTH_LONG).show();
  }
}

2.作用:Intent实现应用中交互和通信

两种Intent跳转,显式、隐式:

//显式跳转
//1.不带参跳转
bt.setOnClickListener(new View.OnClickListener(){
    @override
    public void onClick(View view){
        startActivity(new Intent(MainActivity.this,YourActivity.class))
    }
})
//2.带参跳转,详细能够传什么查阅api文档
bt.setOnClickListener(new View.OnClickListener(){
    @override
    public void onClick(View view){
        Intent intent = new Intent();
        intent.putExtra("yourExtraKeyForObj","yourExtraValueForObj");
        intent.setClassName(MainActivity.this,"under.your.pack.with.Activity.YourActivity");
        startActivity(intent);
    }
})
//3.Bundle传递数据
bt.setOnClickListener(new View.OnClickListener(){
    @override
    public void onClick(View view){
        Intent intent = new Intent(MainActivity.class,YourActivity.class);
        Bundle bundle = new Bundle();
        bundle.putString("yourKey","yourValue");
        intent.putExtras(bundle);
        startActivity(intent);
    }
})
//隐式
public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //设置的行为与AndroidManifest.xml需要启动的组件要一致
                startActivity(new Intent().setAction("myIntent"));
            }
        });
    }
}
//AndroidManifest.xml
<activity android:name=".intent.SecondActivity">
    <intent-filter>
        //为启动行为命名
        <action android:name="myIntent"/>
        //如果没有指定的category 也要设置该默认值,否则报错
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>
<activity android:name=".intent.FirstActivity" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值