Android: ссылка на экран не работает

приложение, которое я создаю, имеет две кнопки на главном экране, которые затем ссылаются на другой экран. Однако, когда я ссылаюсь на другой экран, я получаю файл xml для отображения, но класс, связанный с этим файлом, похоже, не работает. Например, у меня есть кнопки на другом экране, которые не делают того, что должны (у меня есть кнопка «Назад», которая не возвращает на главную страницу, и кнопка изображения, которая не ссылается на экран video.xml).

Кто-нибудь знает проблему?

Main_Activity.java

    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 MainActivity extends Activity {





    @Override
        public void onCreate(Bundle savedInstanceState) 
    {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);





    final Button videoNext = (Button) findViewById(R.id.videoButton) ; 

    videoNext.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

Intent myIntent = new Intent(MainActivity.this, Screen2.class);
        MainActivity.this.startActivity(myIntent);
        //setContentView(R.layout.screen2xml);
        }
    });

    Button newsNext = (Button) findViewById(R.id.newsButton);
    newsNext.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

         Intent myIntent = new Intent(MainActivity.this, Screen1.class);
        MainActivity.this.startActivity(myIntent);
        //setContentView(R.layout.screen2xml);
        }
    });
    }

    }

Экран 2.java

import android.os.Bundle;

import android.app.Activity;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;


public class Screen2 extends Activity {




  public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen2xml);


    Button back = (Button)this.findViewById(R.id.backButton);
    back.setBackgroundColor(5);
    back.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
        setContentView(R.layout.activity_main);
        //finish();

            //Intent intent = new Intent(SImpleRssReader2Activity.this, rahul.SRR2.SimpleRssReader2.Screen1.class); 
        //startActivity(intent);

        }
    });

    ImageButton vid1 = (ImageButton)this.findViewById(R.id.imageButton1);
    vid1.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
        setContentView(R.layout.video);

        //finish();

            //Intent intent = new Intent(SImpleRssReader2Activity.this, rahul.SRR2.SimpleRssReader2.Screen1.class); 
        //startActivity(intent);

        }
    });



    }
}

screen2xml.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingBottom="2dp"
    android:paddingLeft="2dp"
    android:paddingRight="2dp"
    android:paddingTop="2dp" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/backButton" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:ems="10"
        android:inputType="textMultiLine" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="120dp"
        android:ems="10"
        android:inputType="textMultiLine" >

        <requestFocus />
    </EditText>

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="23dp"
        android:background="@drawable/ic_button1"
        android:src="@drawable/ic_button1" android:contentDescription="TODO"/>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/imageButton1"
        android:layout_marginTop="81dp"
        android:ems="10"
        android:inputType="textMultiLine"
        android:text="@string/text" />

</RelativeLayout>

Видео1.java

import java.io.File;

import android.net.Uri;

import android.os.Bundle;
import android.os.Environment;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.VideoView;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;

public class Video1 extends Activity {


    VideoView videoView;
    @Override
public void onCreate(Bundle savedInstanceState) 
    {
    super.onCreate(savedInstanceState);



    videoView = (VideoView) findViewById(R.id.videoView1);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
//Set video link (mp4 format )
    Uri video = Uri.parse("http://vimeo.com/15615625");
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(video);


     videoView.start();
     setContentView(R.layout.video);


    }
@SuppressLint("ParserError") @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}


}

видео.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wunapp.newsvideoapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="12"
        android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Screen1">

        </activity>
        <activity
            android:name=".Screen2">

        </activity>

        <activity
            android:name=".video">

        </activity>
        </application>

</manifest>

Я также получаю эту ошибку logcat (после внесения изменений в комментарии)

07-16 15:46:01.259: E/AndroidRuntime(15421): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: main 07-16 15:46:01.259: E/AndroidRuntime(15421): java.lang.RuntimeException: невозможно запустить активность ComponentInfo{com. wunapp.newsvideoapp/com.wunapp.newsvideoapp.Screen2}: java.lang.NullPointerException 07–16 15:46:01.259: E/AndroidRuntime (15421): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2205) 07 -16 15:46:01.259: E/AndroidRuntime(15421): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240) 07-16 15:46:01.259: E/AndroidRuntime(15421): в android.app .ActivityThread.access$600(ActivityThread.java:139) 07-16 15:46:01.259: E/AndroidRuntime(15421): в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) 07-16 15: 46:01.259: E/AndroidRuntime(15421): в android.os.Handler.dispatchMessage(Handler.java:99) 07-16 15:46:01.259: E/AndroidRuntime(15421): в android.os.Looper.loop (Looper.java:154) 07-16 15:46:01.259: E/AndroidRuntime(15421): в droid.app.ActivityThread.main(ActivityThread.java:4977) 07–16 15:46:01.259: E/AndroidRuntime(15421): в java.lang.reflect.Method.invokeNative(собственный метод) 07–16 15:46 :01.259: E/AndroidRuntime(15421): на java.lang.reflect.Method.invoke(Method.java:511) 07-16 15:46:01.259: E/AndroidRuntime(15421): на com.android.internal. os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 07-16 15:46:01.259: E/AndroidRuntime(15421): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 07 -16 15:46:01.259: E/AndroidRuntime(15421): at dalvik.system.NativeStart.main(собственный метод) 07-16 15:46:01.259: E/AndroidRuntime(15421): вызвано: java.lang. NullPointerException 07-16 15:46:01.259: E/AndroidRuntime(15421): в com.wunapp.newsvideoapp.Screen2.onCreate(Screen2.java:30) 07-16 15:46:01.259: E/AndroidRuntime(15421): в android.app.Activity.performCreate(Activity.java:4538) 07-16 15:46:01.259: E/AndroidRuntime(15421): в android.app.Instrumentation.callActivityOnCreat e(Instrumentation.java:1071) 07-16 15:46:01.259: E/AndroidRuntime(15421): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161) 07-16 15:46:01.259: E/ AndroidRuntime(15421): ... еще 11


person Big_Fan    schedule 16.07.2012    source источник


Ответы (2)


Когда вы нажимаете videoNext, вы просто загружаете XML-файл screen2 в MainActivity.

setContentView(R.layout.screen2xml);

Если вы хотите загрузить активность Screen2, вам нужно запустить ее с намерением, подобным тому, которое вы прокомментировали. Таким образом, второе действие будет отображаться и фактически правильно использовать xml screen2. Так:

Intent myIntent = new Intent(MainActivity.this, Screen2.class);
MainActivity.this.startActivity(myIntent);
person Matt Becker    schedule 16.07.2012
comment
07-09 10:35:14.806: E/Handler(6745): не удалось обработать обратный вызов; интерфейс не реализован, обратный вызов: android.view.View$PerformClick@40da1ca8 07-09 10:35:14.806: E/Handler(6745): java.lang.IllegalStateException: не удалось найти метод finishActivity(View) в классе активности com.wunapp.newsvideoapp.MainActivity для обработчика onClick в классе представления android.widget.Button с идентификатором 'backButton' 07-09 10:35:14.806: E/Handler(6745): at android.view.View$1.onClick(View .java:3058) - person Big_Fan; 16.07.2012
comment
Когда вы получаете ошибку? Чем вы занимаетесь и какую кнопку нажимаете? - person Matt Becker; 16.07.2012
comment
Попробуйте использовать новый View.OnClickListener вместо нового OnClickListener. - person Matt Becker; 17.07.2012
comment
Обновил MainActivity в описании, чтобы вы могли видеть, что у меня есть - person Big_Fan; 17.07.2012
comment
вам также не хватает @Override над вашим методом oncreate в Screen2 - person Matt Becker; 17.07.2012
comment
По-прежнему выдает ошибку «К сожалению, NewsVideoApp остановлен» - person Big_Fan; 17.07.2012
comment
Я не знаю, приятель. У меня почти такой же код, как у вас, и никаких проблем. Из вашего логарифма похоже, что в вашем onCreate вашего второго действия есть проблема, но я не получаю здесь ошибку. Еще одна проблема, с которой вы сталкиваетесь, заключается в том, что у вас есть .video в вашем манифесте, в то время как ваше фактическое имя действия — Video1. - person Matt Becker; 17.07.2012
comment
Действительно? Тогда это странно, не могли бы вы прислать мне то, что у вас есть? И, может быть, я могу сравнить со своей стороны. - person Big_Fan; 17.07.2012
comment
Конечно, дайте мне знать, куда отправить. - person Matt Becker; 17.07.2012
comment
Если можно, не могли бы вы отправить его на [email protected]? Спасибо чувак. - person Big_Fan; 17.07.2012

вместо кода ниже

videoNext.setOnClickListener(new OnClickListener() {

использовать videoNext.setOnClickListener(new View.OnClickListener() {

для этого требуется View.onclickListener.

а также

вместо того, чтобы звонить

setContentView(R.layout.screen2xml);

вы должны начать новую активность с помощью startActivity (намерение); метод и покажите этот макет в этом упражнении. не рекомендуется использовать setContentView более одного раза.

person Community    schedule 16.07.2012
comment
Спасибо за ваш ответ, но он все еще не решает мою проблему. Кнопки на следующей странице не работают. Они появляются, но когда вы их нажимаете, они не переходят на страницу, на которую должны перейти. - person Big_Fan; 16.07.2012
comment
прочитайте мой ответ еще раз, во всем вашем коде написано плохо. вам нужно вызвать новый View.onclickListner вместо нового onclicklistner, как было предложено. вам нужно вызвать StartActivity вместо setcontentview. они все равно не сработают .. примените мои предложения, затем посмотрите, что происходит, и отредактируйте свой вопрос соответствующим образом. - person ; 16.07.2012
comment
У меня все еще есть ошибки, не могли бы вы проверить мой логарифм (отредактированный в вопросе)? - person Big_Fan; 16.07.2012