从不同的布局打开新布局?

时间:2011-09-02 15:39:36

标签: android eclipse android-layout

我遵循了这个教程(它已经过时了,但我找不到任何其他人; http://learnandroid.blogspot.com/2008/01/opening-new-screen-in-android.html

所以,我有它,所以当我点击一些文字时,它应该打开一个不同的布局。

这是我点击打开文本的XML代码:

<TextView android:textAppearance="?android:attr/textAppearanceSmall" 
android:layout_height="wrap_content" 
android:text="Not a member? Sign up now!" 
android:layout_width="wrap_content" 
android:id="@+id/signupText" 
android:layout_gravity="center"></TextView>
</LinearLayout>

这是布局的Java编码,上面有可点击的文字(第一个“屏幕”):

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

public class NetworkActivity extends Activity {
public void onCreate(Bundle icicle)
   {
      super.onCreate(icicle);
      setContentView(R.layout.main);
      TextView click = (TextView) findViewById(R.id.signupText);
      click.setOnClickListener(new View.OnClickListener() {
          public void onClick(View arg0) {
          Intent i = new Intent(NetworkActivity.this, Signup.class);
          startActivity(i);
          } 
       });
    }
 }

第二个布局的Java代码:

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

public class Signup extends Activity
{
public void onCreate(Bundle icicle)
{
  super.onCreate(icicle);
  setContentView(R.layout.signup);
  TextView b = (TextView) findViewById(R.id.signupText);
  b.setOnClickListener(new View.OnClickListener() {
     public void onClick(View arg0) {
     setResult(RESULT_OK);
     finish();
     } 
  });
 }
}

第二种布局的XML代码没有什么特别之处。 (应该吗?)

当我单击模拟器中的文本时,我收到错误信息,表明它已意外关闭。我该如何解决这个问题?

哦,我看到其他问题有点像我的,但他们没有任何帮助。我对这一切都不熟悉,所以如果我做了“错误”的事情,请不要生气。我在这里先向您的帮助表示感谢。 =]

3 个答案:

答案 0 :(得分:1)

你使用这种方法对我有用(这里使用按钮)

    View.OnClickListener handler = new View.OnClickListener(){



        public void onClick(View v) {
            switch (v.getId()) {

                case R.id.button1: 
                      setContentView(R.layout.layout1);
                      break;
                case R.id.button2: 

                    setContentView(R.layout.layout2);
                    break;
                case R.id.button3: 

                     setContentView(R.layout.layout3);
                     break;
                case R.id.button4: 

                    setContentView(R.layout.layout4);
                    break;

                  }
        }
   };
    findViewById(R.id.button1).setOnClickListener(handler);
    findViewById(R.id.button2).setOnClickListener(handler);
    findViewById(R.id.button3).setOnClickListener(handler);
    findViewById(R.id.button4).setOnClickListener(handler);


}

答案 1 :(得分:0)

很可能你没有在Android清单中注册你的第二个活动。您需要为应用中的每个标记创建一个<activity>标记。 logcat中应该有一个错误,基本上是说“找不到活动(你在清单中声明了吗?)”

要解决此问题,您需要在<application>标记中添加标记:

<activity android:name=".Signup" android:label="@string/title_of_the_activity" />

有关详细信息,请参阅<activity> tag documentation

答案 2 :(得分:0)

我们可以通过简单的指定来做到这一点 机器人:可点击=&#34;真&#34; 机器人:的onClick =&#34; name_of_method&#34; 在TextView的xml文件中。