2014-02-02 3 views
0

на данный момент у меня есть 2 вида деятельности, которые имеют точно такой же вид. Однако, когда вы нажимаете на элемент, выполняемые действия различны. Это избыточно, и я хотел бы использовать только 1 активность с двумя разными поведениями onClick.Android: такая же активность, разные onClick-слушатели

В обоих мероприятиях можно нажать кнопку в главном меню. Как я могу различить, какая кнопка была нажата, и настроить действия onClick?

A.java:

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

    GridView gridview = (GridView) findViewById(R.id.gridviewidentify);    
    gridview.setAdapter(new ImageAdapter(this));  

    gridview.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      Toast.makeText(getApplicationContext(), "Clicked!", Toast.LENGTH_LONG).show(); 
     } 
    });  
} 

B.java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_report_animal); 
    setupActionBar(); 
    GridView gridview = (GridView) findViewById(R.id.gridviewreport);   
    gridview.setAdapter(new ImageAdapter(this));   

    // Set up onClick listener 
    gridview.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

      DialogConfirmation.LaunchNewDialog(B.this, "Title", "Message.", "Action", "Cancel");     
     } 
    });   
} 
+0

пожалуйста, напишите ваш код на слушателя до сих пор? –

+2

Поместите флаг, выполните две функции, вызовите ('изнутри вашего onClickListener') на основе значения флага. – Skynet

+0

скажите, пожалуйста, откуда открываются две активные действия? –

ответ

2

называют ваш один активность следующее:

Intent myIntent = new Intent(getApplicationContext() , C.class) ; 
myIntent.putExtra("activity" , "A"); 
startActivity(myIntent); 


Intent myIntent = new Intent(getApplicationContext() , C.class) ; 
myIntent.putExtra("activity" , "B"); 
startActivity(myIntent); 

затем в C активности вы onClickListener сделать примерно следующее:

String activity = getIntent().getExtras().getString("activity"); 

if(activity .equals("A")) { 


}else if (activity .equals("B")){ 

} 

и дать мне некоторую обратную связь.

Надеюсь, что поможет.

0

Содержание двух ваших типов функциональности должны идти на две функции,

public void functionA(){ 

//One functionality here 

//increment/decrement your flag 

} 

public void functionB(){ 

//Second functionality here 

//increment/decrement your flag 

} 

Тогда в вашем onCLickListener:

private View.OnClickListener onPress = new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      If(flag == somevalue){ 
       functionA(); 
      }else { 
       functionB(); 
       } 

      } 
     }; 
0

Из вашего кода вызова добавьте дополнительно к своему намерению указать, какое действие следует предпринять при нажатии кнопки, например.

intent.putExtra("click_option", 1); 

Тогда в вашей деятельности, просто проверить наличие требуемого дополнительные, и это значение:

Bundle extras = getIntent().getExtras(); 
if (extras != null & extras.containsKey("click_option")) { 
    // do something 
} 
Смежные вопросы