Открытие нового макета из другого макета? - PullRequest
0 голосов
/ 02 сентября 2011

Я следовал этому уроку (он старый, но я не смог найти других; 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 ]

1 голос
/ 19 ноября 2012

твой этот метод у меня сработал (здесь используйте кнопку)

    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);


}
0 голосов
/ 02 мая 2013

мы можем сделать это, просто указав android: clickable = "true" android: onClick = "name_of_method" в XML-файле TextView.

0 голосов
/ 02 сентября 2011

Скорее всего, вы не зарегистрировали второе действие в манифесте Android. Вам нужно создать тег <activity> для каждого в вашем приложении. В logcat должна быть ошибка, в основном говоря: «Не удалось найти действие (Вы объявили это в своем манифесте?)» .

Все, что вам нужно сделать, чтобы это исправить, это добавить тег внутри тега <application>:

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

Дополнительную информацию см. В документации тега <activity> .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...