a8411094 2014-02-27 13:40
浏览 1196

【Android】setContentView和Inflater问题,请大神们帮我解决!大谢~

一个Activity内多个View互相切换,我查的网上的资料都是使用setContentView+LayoutInflater结合操作,比如这段代码。

enter code here

public class MainActivity extends Activity {
View layoutMain = null;
View layoutSecond = null;
Button btn_mainActivity = null;
Button btn_secondActivity;
boolean firstFlag = true;
long time = (long)0.0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = this.getLayoutInflater();
layoutMain = inflater.inflate(R.layout.activity_main, null);
layoutSecond = inflater.inflate(R.layout.activity_second, null);
setContentView(layoutMain);

    btn_mainActivity  = (Button)findViewById(R.id.btn_mainAc_1);        
    btn_mainActivity.setOnClickListener(new ButtonListen());

}

class ButtonListen implements OnClickListener{

    public void onClick(View v) {
        // TODO Auto-generated method stub
        time = System.currentTimeMillis();
        switch(v.getId()){
        case R.id.btn_mainAc_1:
            Jump2Second();
            break;
        case R.id.btn_secondA_1:
            Jump2Main();
            break;
        default:
            break;
        }
    }

}
public void Jump2Second(){
    setContentView(layoutSecond);
    long currTime = System.currentTimeMillis();
    Toast.makeText(MainActivity.this,
            "时间:"+String.valueOf(currTime-time)+"秒",
            Toast.LENGTH_SHORT).show();
    if(firstFlag){
        btn_secondActivity = (Button)findViewById(R.id.btn_secondA_1);
        btn_secondActivity.setOnClickListener(new ButtonListen());
        firstFlag = false;
    }           

}
public void Jump2Main(){
    setContentView(layoutMain);
    long currTime = System.currentTimeMillis();
    Toast.makeText(MainActivity.this,
            "时间:" +String.valueOf(currTime-time)+"秒",
            Toast.LENGTH_SHORT).show();
}

}

enter code here

但是我自己练习了一个,没有用到Inflater,直接用setcontentview切换,可以吗?和上面的方法有什么不同吗?为什么一定要通过LayoutInflater转换成View,再传到setcontentview中呢,setcontentview不是有一个传ID的重载方法吗?
下面是我的代码:

enter code here

public class MainActivity extends Activity {
private EditText myedit = null;
private Button mybut1 = null;
private Button mybut2 = null;

// private LayoutInflater inflater = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myedit = (EditText) findViewById(R.id.myedit);
    mybut1 = (Button) findViewById(R.id.mybut1);
    mybut1.setOnClickListener(new buttonlisener());
}

public class buttonlisener implements OnClickListener {
    @Override
    public void onClick(View v) {
        switch(v.getId()) {
        case R.id.mybut1:
            setContentView(R.layout.second);
            mybut2 = (Button)MainActivity.this.findViewById(R.id.mybut2);
            mybut2.setOnClickListener(new buttonlisener());
            break;
        case R.id.mybut2:
            setContentView(R.layout.activity_main);
            mybut1 = (Button) findViewById(R.id.mybut1);
            mybut1.setOnClickListener(new buttonlisener());
            break;
        default:
            break;
        }
    }

}

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
    • ¥15 matlab有关常微分方程的问题求解决
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算
    • ¥15 java如何提取出pdf里的文字?
    • ¥100 求三轴之间相互配合画圆以及直线的算法