Android练习之Activity活动

前言

找到一本不错的书——《第一行代码Android》,虽然是基于4.X版本的,但还有很多知识没有变,当然也还有一些东西变化了。所以决定用Android Studio1.4单刷第一行代码Android。

隐藏标题栏

在安卓4.x可以使用以下两种方法隐藏标题栏:
1、在代码中实现:
在此方法setContentView(R.layout.main)之前加入:
requestWindowFeature(Window.FEATURE_NO_TITLE);标题栏就没有了。

2、在AndroidManifest.xml中实现:
注册Activity时加上如下的一句配置就可以实现。

1
2
3
4
<activity  
android:name=".MainActivity"
android:theme="@android:style/Theme.NoTitleBar">

</activity>

但是从5.0起,这两个方法就不起作用了,出现空指针的错误。

我郁闷了很久,再网上查了很多朋友有这个问题。后来发现我忽略了一个细节:
我的Activity活动继承自AppCompatActivity,而不是Activity;

在API文档中可以看到AppCompatActivity是Activity的子类;
后来,我把继承AppCompatActivity改为了继承Activity,再试上面两个方法就都成功了。(我是版本Android6.0的版本)

隐式Intent用法:

功能:两个按钮,第一个按钮显示一个Toast信息;第二个按钮启动一个浏览器(百度)。

代码:
在xml文件中:

1
2
3
4
5
6
7
8
9
10
<Button
android:id="@+id/button1_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button1"/>

<Button
android:id="@+id/button1_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button2"/>

在MainActivity.java中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class MainActivity extends Activity
{

private Button button1;
private Button button2;
@Override
protected void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);

button1 = (Button)findViewById(R.id.button1_1);
button2 = (Button)findViewById(R.id.button1_2);

button1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{

Toast.makeText(MainActivity.this, "点击了第一个按钮", Toast.LENGTH_SHORT).show();
}
});
button2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
}
}

用Intent向下一个活动传递数据

功能:点击第一个活动的按钮,跳转到第二个活动;第二个活动显示“你好”;当点击按钮后,显示第一个活动传入的字符串数据

代码:
这里设置两个Activity:MainActivity和FirstActivity。

在MainActivity中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MainActivity extends Activity
{

private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button1 = (Button)findViewById(R.id.button0_1);
button1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{

Intent intent = new Intent(MainActivity.this, FirstActivity.class);
intent.putExtra("myData", "hello,smallbo");
intent.putExtra("year", 2015);
startActivity(intent);
}
});
}
}

在FirstActivity中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class FirstActivity extends Activity
{

private TextView textView1;
private Button button1;

@Override
protected void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);

textView1 = (TextView)findViewById(R.id.text1_1);
button1 = (Button)findViewById(R.id.button1_1);
button1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{

Intent intent = getIntent();
String str = intent.getStringExtra("myData");
int i = intent.getIntExtra("year", 0);
textView1.setText(str);
System.out.println(i);
}
});

}
}

用Bundle向下一个活动传递数据

功能:
点击第一个活动的按钮,跳转到第二个活动;第二个活动显示“the first data”和0.2015

代码:
这里设置两个Activity:MainActivity和FirstActivity。xml文件代码就不贴出来了,比较简单。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MainActivity extends AppCompatActivity
{

private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button1 = (Button)findViewById(R.id.button0_1);
button1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{

Intent intent = new Intent(MainActivity.this, FirstActivity.class);
Bundle bundle = new Bundle();
bundle.putString("data1", "the first data");
bundle.putFloat("data2", 0.2015f);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class FirstActivity extends AppCompatActivity
{

private TextView textView1;
private TextView textView2;
@Override
protected void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);

textView1 = (TextView)findViewById(R.id.textView1_1);
textView2 = (TextView)findViewById(R.id.textView1_2);

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
textView1.setText(bundle.getString("data1"));
textView2.setText(bundle.getFloat("data2")+"");
}
}