Android - Свързването на екрана не работи

приложението, което създавам, има два бутона на главния екран, които след това се свързват към друг екран. Въпреки това, когато се свържа с другия екран, xml файлът се показва, но класът, свързан с този файл, изглежда не работи. Сякаш имам бутони на другия ми екран, които не правят това, което трябва (имам бутон за връщане назад, който не се връща към главната страница, и бутон за изображение, който не препраща към екрана video.xml).

Някой знае ли проблема?

Основна_Дейност.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>

Video1.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;
}


}

video.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): ФАТАЛНО ИЗКЛЮЧЕНИЕ: основно 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): в android.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): на 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.callActivityOnCreate(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): в 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
Не знам, приятел. Имам почти същия код като теб и нямам проблеми. От вашия logcat изглежда, че има проблем във вашия 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(intent); метод и покажете това оформление в тази дейност. не се препоръчва да използвате setContentView повече от веднъж.

person Community    schedule 16.07.2012
comment
Благодаря за отговора, но той все още не решава проблема ми. Бутоните на следващата страница не работят. Те се показват, но когато ги натиснете, те не отиват на страницата, на която трябва да отидат. - person Big_Fan; 16.07.2012
comment
прочетете отговора ми още веднъж, в целия ви код е лошо написано. трябва да извикате new View.onclickListner вместо new onclicklistner, както е предложено. трябва да извикате StartActivity, вместо setcontentview. те така или иначе няма да работят.. приложете моите предложения, след това вижте какво се случва и съответно редактирайте въпроса си - person ; 16.07.2012
comment
Все още имам грешки, можете ли да проверите моя logcat (редактиран във въпроса)? - person Big_Fan; 16.07.2012