当前位置: 代码迷 >> Android >> 实现点一个按钮切换到下一个activity的有关问题(监听有关问题)
  详细解决方案

实现点一个按钮切换到下一个activity的有关问题(监听有关问题)

热度:67   发布时间:2016-04-28 03:27:22.0
实现点一个按钮切换到下一个activity的问题(监听问题)
本帖最后由 freshnerd 于 2014-12-09 23:18:55 编辑
我想实现的是这样的:一个mainActivity里有一个按钮  我点击一下,跳到了下一个Activity里(命名为aty1),然后aty1里有一个按钮,我点击一下,执行system.out.println (hello world)语句。然后我就可以在logcat里看到hello  world的输出

遇到的问题是:点击mainActivity的button时候提示:抱歉  停止运行。

我的思路和代码是:
首先设置mainActivity  其中btn1可以触发aty1的运行
package com.example.lab1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
private Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1=(Button) findViewById(R.id.aty1);
        
        btn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i =new Intent(MainActivity.this,Aty1.class);
startActivity(i);
}
});
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

然后


建立aty1的xml文件 添加一个按钮btn2

package com.example.lab1;

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

public class Aty1 extends Activity {
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
btn2=(Button) findViewById(R.id.aty2);
setContentView(R.layout.aty1);
btn2.setOnClickListener(new View.OnClickListener() {


public void onClick(View v) {
System.out.println("hello world");

}
});

}
}



然后修改manifest 添加一下aty1 

我不明白为什么会停止运行。  我也试过,如果把aty1里的监听去掉,就可以运行了,求大神指点
------解决思路----------------------
    btn2=(Button) findViewById(R.id.aty2);
    setContentView(R.layout.aty1);



这两句调换一下顺序,要先setContentView 之后再findViewByid
------解决思路----------------------
1.Activity中本身没有你要的那个View,R.layout.aty1对应的是个xml文件
2.要把xml文件变成view,通过setContentView设置后,Activity帮你解析成View,而Button在这个View解析完成才存在。
3.这时 findViewById(R.id.aty2);才能够得到Button,因为在解析View的时候,Button的Id被设置了R.id.aty2。
你的问题是View还没有,Button也就不存在,那么没有Button,怎么给自己设置id呢?
  相关解决方案