单击按钮时setContentView无法正常工作

时间:2014-01-12 13:25:53

标签: android layout android-activity

Pease帮我解决了我的代码。

当我点击任何按钮时,button1,button2或button3会打开新活动,但布局为空,没有任何文字和其他文字。

调用新活动的活动代码:

package com.novator.inweld;

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

public class TentsCatalog extends Activity implements OnClickListener
{
    private Button button1;
    private Button button2;
    private Button button3;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tents_catalog);

        button1 = (Button)findViewById(R.id.button1);
        button2 = (Button)findViewById(R.id.button2);
        button3 = (Button)findViewById(R.id.button3);

        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
    }

    @Override
    public void onClick(View view)
    {
        if(view == button1)
        {
            Intent intent = new Intent(this, TentPage.class);
            intent.putExtra("tentId", "1");
            startActivity(intent);
        }

        if(view == button2)
        {
            Intent intent = new Intent(this, TentPage.class);
            intent.putExtra("tentId", "2");
            startActivity(intent);
        }

        if(view == button3)
        {
            Intent intent = new Intent(this, TentPage.class);
            intent.putExtra("tentId", "3");
            startActivity(intent);
        }
    }
}

我的新活动代码:

package com.novator.inweld;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class TentPage extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        Intent intent= getIntent();
        String tentId = intent.getStringExtra("tentId");

        if(tentId == "1")
        {
            setContentView(R.layout.tent1);
        }

        if(tentId == "2")
        {
            setContentView(R.layout.tent2);
        }

        if(tentId == "3")
        {
            setContentView(R.layout.tent3);
        }
    }

}

4 个答案:

答案 0 :(得分:2)

使用equals(),而不是==

if(tentId.equals("1"))

答案 1 :(得分:1)

Java是b *%$#ch ...使用equals()

if(tentId.equals("1")) ...

此外,根据this answer,Android在switch语句中支持Java 1.7的字符串,这意味着您可以以更整洁的方式重写代码:

switch(tendId) {
    case "1": ...
    case "2": ...
    case "3": ...
}

请记住,最简单的解决方案是将tendId作为int传递而不是字符串:

 intent.putExtra("tendId", 1);
 int tendId = intent.getIntExtra("tendId");

答案 2 :(得分:1)

使用以下方法更改onClick方法:

   @Override
public void onClick(View v)
{
    Intent intent = new Intent(this, TentPage.class);
    switch (v.getId()) {
    case R.id.button1:
        intent.putExtra("tentId", "1");
        startActivity(intent);
        break;
    case R.id.button2:
        intent.putExtra("tentId", "2");
        startActivity(intent);
        break;
    case R.id.button3:
        intent.putExtra("tentId", "3");
        startActivity(intent);
        break;


    default:
        break;
    }

并使用tentId.equals("");对于字符串检查,您必须使用equals()方法,并使用数字值==,如:

if(tentId.equals("1"))
        {
            setContentView(R.layout.tent1);
        }

        if(tentId.equals("2"))
        {
            setContentView(R.layout.tent2);
        }

        if(tentId.equals("3"))
        {
            setContentView(R.layout.tent3);
        }

答案 3 :(得分:0)

将您的帐号替换为:

package com.novator.inweld;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class TentPage extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        Intent intent= getIntent();
        String tentId = intent.getStringExtra("tentId");

        if(tentId.equals("1"))
        {
            setContentView(R.layout.tent1);
        }

        if(tentId.equals("2"))
        {
            setContentView(R.layout.tent2);
        }

        if(tentId.equals("3"))
        {
            setContentView(R.layout.tent3);
        }
    }

}