2017-05-22 55 views
0

我有我的代碼,一旦用戶單擊主頁按鈕,就可以返回到主要活動的簡單活動。如何實現一個java方法來將活動返回給mainActivity?

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

     // Set up onclicklistener for homeIcon imageview to go to back one activity 
     ImageView homeIcon = (ImageView) findViewById(R.id.home_icon); 

     homeIcon.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
      } 
     }); 
    } 

這是針對單個活動的問候語的java文件。我想要這個主頁按鈕+許多其他活動的功能,但我不想複製和粘貼。我應該創建另一個java類,並在其中實現該函數嗎?我嘗試過,但無法找到視頻。

+1

您應該有一個基類,它從一個活動擴展而來,並且爲所有活動做你想做的事情,然後可以從該活動擴展class(BaseActivity) –

+0

對於android studio,我已經在擴展AppCompatActivity。我該怎麼辦? –

+0

您可以創建一個名爲BaseActivity的抽象類並從AppCompatActivity擴展,然後您可以完成所有其他活動中的所有內容,然後可以從BaseActivity擴展其他活動,那就是。 –

回答

2

沒有你的代碼真的很難明白,爲什麼你不能ID找到,但我可以提供這樣說:

HomeButtonActivity.java

public class HomeButtonActivity extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     Button home_button = (Button) findViewById(R.id.home_button); 
     home_button.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View view) 
      { 
       Toast.makeText(HomeButtonActivity.this, "Replace with your own action", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 

Activity1.java

public class Activity1 extends HomeButtonActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     setContentView(R.layout.activity1); 

     super.onCreate(savedInstanceState); 
    } 
} 

活性1 .xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.myapplication.HomeButtonActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_main" /> 
    <include layout="@layout/home_button" /> 

</android.support.design.widget.CoordinatorLayout> 

home_button.xml

<?xml version="1.0" encoding="utf-8"?> 
<Button xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/home_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|center" 
    android:text="home button"/> 
+0

謝謝!我想知道一件事。的setContentView(R.layout.activity_greetings); super.onCreate(savedInstanceState);爲什麼setContentView必須先行?之前,我先創建了super.onCreate(),但是在將我的基類擴展到appcompatactivity並將我的活動類擴展到基類後,該應用程序不會運行。 –

+1

@EthanWatson,我先寫了setContentView,因爲我們需要創建視圖,之後我們可以找到ViewById。如果它有問題,你可以創建init方法,在HomeButtonActivity中的onCreate和home_button之間插入它,並在Activity1中覆蓋它 –

0

創建類如ReturnClass創造構造它,然後通過上下文作爲參數如ReturnClass(上下文的背景下),然後從每個你可以調用這個活動寫

Intent intent = new Intent(context , MainActivity.class); context.startActivity(intent);

並將活動傳遞給它,並且ReturnClass將其返回到主活動

相關問題