日志

Android之activity初讲

 来源    2016-11-17    1  

  前天我们已经成功创建了第一个Android项目,如果我要把软件推荐给我的第一个用户,毫无疑问是从界面开始介绍。因为即使你的程序算法再高效,架构再出色,用户根本不会在乎这些,他们一开始只会对看到的东西感兴趣,今天我们就学习了如何更换布局(layout)。

 当然今天主要讲的还是 activity 页面中 Button 按钮的一个点击事件。在 java 中 点击事件弹出消息直接在 js 中 写 alter 即可。但是在 Android 中没那么简单。昨天我们学习了 java 的内部类。在 Android 点击事件中,我们主要使用的是 匿名内部类( anonymous inner class)

  因为布局(layout)属于资源文件,所以我们直接在res—>layout—>右键—>new—>others—>Android—>Android XML Layout File —> next—>填写layout名称—>Finish

下面给我们新new出的test1.xml部署一个button组件

 复制我们所添加组件的id

  • android:layout_width 指定了当前元素的宽度
  • android:layout_height 指定了当前元素的高度  
  • android:text 指定了元素中显示的文字内容
  • wrap_content 表示当前元素的宽、高度只要能刚好包含里面的内容就行 

现在点击按钮没有任何的效果,因为我们还没有写事件,接下来就为按钮button1添加事件,有两种方法

1、MainActivity.java中添加匿名内部类

2、另写一个activity,然后再MainActivity.java中配置

通常情况下不建议在MainActivity.java写匿名内部类,因为所有的组键在MainActivity.java配置不好分析逻辑结构

 下面是第二种方法MainActivity.java中写的配置及匿名内部类的注释

package com.example.helloworld;

import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class Btn1ClickListener implements OnClickListener{
    
        private Context context;
        
        public Btn1ClickListener(Context c) {
            this.context  = c;
        }
        
        @Override
        public void onClick(View arg0) {
            Toast.makeText(context, "你很好 Android 1班", Toast.LENGTH_LONG).show();
        }
    
}

package com.example.helloworld;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    
     private Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.activity_main);
       // TextView tv1 = (TextView) this.findViewById(R.id.textView1);
      //  tv1.setText("你好,Android 1班");
        
        
        this.setContentView(R.layout.test);//布局layout名称
        btn1 = (Button) findViewById(R.id.button1);//组件所代表的id
        btn1.setText("点我咯");
        
        
        btn1.setOnClickListener(new Btn1ClickListener(this));//尽可能减少new代码,交给容器(后加Spring框架
        
       /* btn1.setOnClickListener(new OnClickListener(){
            //匿名内部类
            public void onClick(View v){
                
                Toast.makeText(MainActivity.this, "你好 Android 1班", Toast.LENGTH_LONG).show();
            
            }
        });*/
    }
}

下面运行看看我们的成果吧

今天小主用的是夜神模拟器

 菜鸟一枚的我,还在Android路上努力奔跑,各位大神多多指教喔!

相关文章
android – 将Activity中的Arraylist传递给Fragment
问答我有MyClass实现Parcelable.并有2个片段.在MainActivity(onCreate)中我有代码: ArrayList<MyClass> data = new Array ...
1
android – 从Activity onStart()调用Google Play服务GoogleApiClient.connect()会导致间歇性的OpenGL崩溃(NvRmChannelSubmit错误等)
问答我将我们的应用更新为Google Play Services第17版,这需要将应用的3D活动从Activity更改为FragmentActivity.我们现在比以前更早地调用GoogleApiClie ...
1
android – 理解Activity的setContentView
问答我需要以编程方式"按需"创建所有UI,这意味着我不能使用任何XML.这是我做的伪代码: View v = new MyView(); activity.setContentView ...
1
android – 测试Activity返回预期结果
问答我有以下活动: package codeguru.startactivityforresult; import android.app.Activity; import android.content ...
1
android – 在Activity上下文之外启动新Activity.
问答我试图在我的AsyncTask类(onPostExecute())中启动一个Activity并关闭其他. 我的代码: Intent i = new Intent(parentActivity, Thu ...
2
android – 在Activity中设置CheckBoxPreference的值
问答您好我需要知道如何以编程方式设置值. 我正在使用该代码 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( ...
离开活动时,Android Map Activity崩溃[致命信号11(SIGSEGV)]
问答我正在开发和使用Google地图的Android应用.当我离开地图活动它崩溃,其他事情运作良好.我正在使用Android Studio和Android虚拟设备. 我在一个真实的设备上测试了应用程序,没 ...
1
android – 在Activity和ViewModel之间传递数据
问答我正在学习用于Android编程的新架构组件,我很难理解活动的职责是什么.我知道他们只应该处理UI,这是有道理的,但在多大程度上?假设我有一个活动,最初有一个EditText,用户可以在其中输入Str ...
1
无法强制转换为android.app.Activity
问答当我运行我的应用程序时,请帮助我得到这些错误,我试图制作一个Android游戏 我一直试图解决这个问题和其他问题超过3天 <manifest xmlns:android="http:/ ...
android – 为什么Activity在onBackPressed()中调用finish()后没有完成或销毁?
问答朋友在我的活动中,我已经在onBackpressed()中放置了finish(),有时它还没有完成或破坏活动..问题是什么?::super.onBackpressed()将为你做最后的事情,所以在重写 ...
1
Xamarin Android从Activity传递变量到Fragment返回null
问答我正在尝试将变量从我的主要活动传递到片段.这就是我试图这样做的方式: 这是我的活动: Bundle args = new Bundle (); args.PutString ("header ...
1
android – 在Activity被销毁后,ImageView上的图像丢失了
问答我正在尝试创建一个应用程序,我可以让用户选择要在其个人资料中显示的图片.我可以在imageview上浏览和设置他们选择的图像.但是一旦活动被破坏,图像就会丢失.我试图实现onSaveInstanceS ...
android – 在Activity之间传递包含Map的parcelable对象
问答实现Parcelable的我的类ExpenseFB包含一个UserFB Map(也实现了Parcelable): ExpenseFB: public class ExpenseFB implement ...
1
android – 为什么Activity.getPackageManager()会返回null
问答我有一个方法将Intent解析为ComponentName: private static ComponentName resolveViewExternalIntent(Context contex ...
1
Android的Activity生命周期如何与整个应用程序相关?
问答这似乎没有很好地记录或我错过了,所以在我运行一堆我自己的测试之前,我想知道是否有人已经知道其中一些问题的答案. 首先,当我说"应用程序"时,我指的是扩展Application类. ...
1
Android:Activity.runOnUiThread和View.post有什么区别?
问答Activity.runOnUiThread和View.post有什么区别,有人可以解释一下吗?::没有真正的区别,除了View.post是有用的,当你没有直接访问活动. 在这两种情况下,如果没有在U ...
1
Android – 在Activity被杀死并重新创建之后,片段依然存在
问答我有一个FragmentActivity(支持片段),我通过代码创建Fragment并将其放入FrameLayouts.到目前为止,这一切都很好. 现在如果我离开应用程序返回一切都很好,只要系统不会杀 ...
1
android – 从Activity中启动BroadCastReceiver
问答我想从一个Activity启动一个BroadcastReceiver.我怎样才能做到这一点?::定义您的BroadcastReceiver: private final BroadcastReceiv ...
1
android – Tab Activity中的片段在旋转时丢失所有数据?
问答我正在使用Sherlock ActionBar库,我有一个SherlockFragmentActivity实现ActionBar.TabListener(对于我的标签),我有3个标签-每个都是Sher ...
android – 启动Activity而不将Application带到前面
问答我正在为我的媒体播放器更换锁定屏幕,我在一个方面遇到了麻烦. 锁定屏幕本身是一个新的活动,只要屏幕关闭,我的媒体服务就会启动它.问题是,Activity使用应用程序上下文启动,这会导致用户解锁后将应用 ...