androidでのアプリ開発~なるほど、わからん~

アバター
Cir
記事: 32
登録日時: 14年前
住所: 近畿地方

androidでのアプリ開発~なるほど、わからん~

投稿記事 by Cir » 11年前

この間androidのタブレットを購入しました。ASUSのMemoPad HD7とかいうやつです。

タブレットをいじいじするのが楽しく、なんとなくモチベーションが上がってきました。
ちょうど春休みなので、せっかくだからandroidのアプリ開発をしようと思い立ち、だいぶ前にインストールした
android sdkとかツールとかを最新のものに更新し、いざプロジェクトを作ろうとすると...

('ω') webにある情報が古すぎてワカラン

webで紹介されているjavaのコードは、

CODE:

package com.exsample.sample;

import android.app.Activity;
import android.os.Bundle;

public class Sample_Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
こんな感じでした。シンプルでいいと思います。

しかし、自分の環境で生成されたコードは、

CODE:

package com.example.sample;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

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

		if (savedInstanceState == null) {
			getSupportFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}
	}

	@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;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}

}
('ω') オオウ、なんか増えてる...

そもそもAndroidアプリケーション・プロジェクトで表示されている内容が、webで紹介されているものと手元の環境とで違うという。
いろいろとGoogle先生に質問してみたものの、よくわからない。

今度書店に行って、よさげな本を探してみようと思います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by softya(ソフト屋) » 11年前

あぁActionBarActivity とあるので新しいですね。
たぶん、新しいAPIバージョンを選択したのではないでしょうか。
この場合、古いAndroid2.3とかでは動かないかもしれません。

【補足】
でも、v7がimportされているので大丈夫かも?
最後に編集したユーザー softya(ソフト屋) on 2014年3月13日(木) 09:50 [ 編集 1 回目 ]

ISLe
記事: 2650
登録日時: 14年前

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by ISLe » 11年前

ちょっと前までテーマ無しのBlankActivityで生成されるコードはシンプルなものでしたが。
しばらく(と言っても数ヶ月?)触らないうちにまた変わったのですかね。
その間にAndroid自体も新しいバージョン出たし。

…どうもテーマ無しが反映されないみたいですけど。
不具合っぽいですね。

Android SDKの更新は速いので、たぶん本の情報も出るころにはたいてい古くなってるのではないでしょうかね。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by Dixq (管理人) » 11年前

え、今BlankActivityで作ればシンプルですけどね・・フラグメントのクラスまで作ってくれるんですか・・?
一応今でも上のコードだけで動きますよ。

ISLe
記事: 2650
登録日時: 14年前

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by ISLe » 11年前

ウチは今テーマ無しのBlankActivityで作ってもシンプルになりません。
現時点で最新版ですが、環境依存なんですかね。
インストールし直したら直るのかな。
最後に編集したユーザー ISLe on 2014年3月13日(木) 23:33 [ 編集 1 回目 ]


アバター
Cir
記事: 32
登録日時: 14年前
住所: 近畿地方

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by Cir » 11年前

softya(ソフト屋)さん>
手持ちのスマホはandroid2.3なのですが、試しに実機で動作させてみたら動いてくれました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by softya(ソフト屋) » 11年前

私の所でBlankActivityで作るとこんな感じです。

CODE:

package com.example.test;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

	@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;
	}

}

アバター
Cir
記事: 32
登録日時: 14年前
住所: 近畿地方

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by Cir » 11年前

ISLeさん>
私の環境でも(比較的)複雑なコードが出力されますね。
上のコードは、一応テーマなし、BlankActivityです。

アバター
Cir
記事: 32
登録日時: 14年前
住所: 近畿地方

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by Cir » 11年前

Dixq さん>
お勧めの書籍の紹介ありがとうございます!
週末に書店に足を運んでみようと思います。

アバター
Cir
記事: 32
登録日時: 14年前
住所: 近畿地方

Re: androidでのアプリ開発~なるほど、わからん~

投稿記事 by Cir » 11年前

softya(ソフト屋)さん>
シンプルなコードですね。やはり環境(SDKのバージョン?)の違いなのでしょうか。
手元にある環境で2.3のAPIを選択すると、「選択されたバージョンではActivityを作成できません」という感じのメッセージが表示されて、アクティビティーが作成出来ないんです。
じゃあ手動で作ればいいじゃない、という話になってしまうのですが、いかんせん知識不足なんですよね。