2013-12-11 4 views
3

Я новичок в программировании на Android. Я создал приложение с двумя действиями - основной деятельностью, а затем другой - с именем New1. Теперь это то, что мне нужно сделать. Я хочу, чтобы второе действие запускалось, когда пользователь касался в любом месте главной операции. Я попытался сделать это, используя onTouch(), но это не сработает. Ниже приводится код MainActivity.java:Запуск деятельности по касанию в любом месте в основной деятельности

package com.example.firstapp; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.*; 
import android.view.View.OnTouchListener; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity implements OnTouchListener { 

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

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public boolean onTouch(View v, MotionEvent event) { 
     Intent intent = new Intent(this, New1.class); 
     startActivity(intent); 
     return true;  
    } 
} 

И Ниже приводится код макета activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="206dp" 
     android:text="Touch Anywhere" /> 

</RelativeLayout> 

Я работаю с затмением и с помощью Android 4.0 в качестве цели. Пожалуйста помоги!

+0

Попробуйте установить сенсорную слушателя для RelativeLayout – Triode

ответ

1
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:id="@+id/relativeLayout1" > 

    <TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="206dp" 
    android:text="Touch Anywhere" /> 

</RelativeLayout> 

, а затем установить RelativeLayout на Louch слушателя в onCreate т.е.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     RelativeLayout layout= (RelativeLayout)findViewById(R.id.relativeLayout1); 
     layout.setOnTouchListener(this); 
    } 
+0

Спасибо, сэр! Мое приложение работает отлично. –

0

Попробуйте использовать этот метод переопределения Этот метод называется, если пользователь взаимодействует с экраном.

public void onUserInteraction() { 
    super.onUserInteraction(); 
    // Call your intent here. 
    }; 

Вы можете прочитать больше об этом here

1

слушатель будет работать при подключении, что слушателя к чему-то. Поскольку я вижу, что вы внедрили onTouchListener, но не подключили этот прослушиватель к чему-либо. Получите ссылку на ваш relativelayout с помощью findViewById или получите декорвью для своей деятельности и присоедините своего слушателя к этому представлению. Например:

RelativeLayout rl = (RelativeLayout)findViewById(R.id. some id); 
rl.setOnTouchListener(this); 
+0

Спасибо! Вы были правы .. Это работает .. –

0

Я хотел бы предложить добавить android:id="@+id/myParentLayout" в макет XML родительского элемента, а затем с помощью OnTouchListener на этой точке зрения. Вы можете прочитать о OnTouchListener по адресу http://developer.android.com/reference/android/view/View.OnTouchListener.html Это должно выполнить эту работу.

..... 
// In onCreate for Activity 
    // Find your view , ex: if your parent is a LinearLayout 
    LinearLayout mParentLayout = (LinearLayout) findViewById(R.id.myParentLayout); 
    myParentLayout.setOnTouchListener(ParentTouchListener); 


} // end onCreate() 

OnTouchListener ParentTouchListener = new OnTouchListener(){ 
     @Override 
     public boolean onTouch(View v, MotionEvent event){ 

     // Handle Actions if user presses down on screen 
     if(event.getAction() == MotionEvent.ACTION_DOWN){ 

      // Do something 

      // Action supported, screen was touched 
      return true; 
     } 

     // default return when touch action is unsupported 
     return false; 
     } 
}; 

Кроме того, MotionEvent действия находятся в http://developer.android.com/reference/android/view/MotionEvent.html

+0

Правильно! И так были Саиф и Мукеш выше ... Спасибо за ваше время –

Смежные вопросы