Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Must every activity have a layout?

I'm just getting started with Android and was reading up BroadcastReceiver. Since the MainActivity was being used only to get the alarm time in seconds, it got me thinking whether layout XML files are must for every activity in Android. I mean, is it possible to have an app that when launched, shows no view, but successfully sets up a receiver?

like image 355
ankush981 Avatar asked Jun 27 '13 14:06

ankush981


People also ask

Is it possible to have an activity without UI layout?

Explanation. Generally, every activity is having its UI(Layout). But if a developer wants to create an activity without UI, he can do it.

What is the difference between activity and layout?

Layout is where you organize the views in your page. But without activity, they have no meaning. Because in activity, you have to get these views and use them programmaticaly. All together, you load views from layout to activity and in activies you implement your whole program.

How do I change my activity layout?

You can simply call setContentView(R. layout. your_search_layout) in the click listener of your button.

How can use multiple layouts in one activity in Android?

You can use as many layouts as possible for a single activity but obviously not simultaneously. You can use something like: if (Case_A) setContentView(R. layout.


1 Answers

The answer is yes it's possible. Activities don't have to have a UI. It's mentioned in the documentation, e.g.:

An activity is a single, focused thing that the user can do. Almost all activities interact with the user [...]

(see http://developer.android.com/reference/android/app/Activity.html)

Related SO question: https://stackoverflow.com/a/12817384/534471

To e.g. display a Toast from an Activity without layout you would define the activity in your manifest like so:

<activity     android:name=".MainActivity"     android:theme="@android:style/Theme.NoDisplay">     <intent-filter>         <action android:name="android.intent.action.MAIN" />         <category android:name="android.intent.category.LAUNCHER" />     </intent-filter> </activity> 

The code would look like this:

public class MainActivity extends Activity {     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         Toast.makeText(this, "I'm alive", Toast.LENGTH_LONG).show();         finish();     } } 
like image 121
Emanuel Moecklin Avatar answered Oct 02 '22 13:10

Emanuel Moecklin