마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

A액티비티에서 B액티비티의 소스를 짤 수 있나요?

0 추천

메인 액티비티 하나, 웹뷰 액티비티 하나인 앱을 만드려고합니다.

그런데 한가지 문제가 있습니다.

 

A 액티비티(메인)에서 각각 버튼 1, 2, 3, 4, 5 가 있다고 하면.

1을 눌렀을땐 웹뷰 액티비티로 넘어가 예를 들어 구글을 띄우고,

2를 눌렀을땐 웹뷰 액티비티로 넘어가 네이버를 띄우고, 3은 네이트, 4는 다음, 5는 넥슨

 

뭐 이렇게 로드 시키려고 합니다.

방법이 혹시 있나요?

 

MainActivity


public class MainActivity extends Activity {

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

		Button prologue = (Button) findViewById(R.id.prologue);
		prologue.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent i = new Intent(MainActivity.this, Web.class);
				startActivity(i);
			}
		});

		Button man1 = (Button) findViewById(R.id.man1);
		man1.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent i = new Intent(MainActivity.this, Web.class);
				startActivity(i);
			}
		});

		Button man2 = (Button) findViewById(R.id.man2);
		man2.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent i = new Intent(MainActivity.this, Web.class);
				startActivity(i);
			}
		});
		Button man3 = (Button) findViewById(R.id.man3);
		man3.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent i = new Intent(MainActivity.this, Web.class);
				startActivity(i);
			}
		});
		Button man4 = (Button) findViewById(R.id.man4);
		man4.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent i = new Intent(MainActivity.this, Web.class);
				startActivity(i);
			}
		});
		Button man5 = (Button) findViewById(R.id.man5);
		man5.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent i = new Intent(MainActivity.this, Web.class);
				startActivity(i);
			}
		});

 

WebActivity

public class Web extends Activity {

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

		WebView wv = (WebView) findViewById(R.id.web);
		WebSettings set = wv.getSettings();
		set.setJavaScriptEnabled(true); // javascript를 실행할 수 있도록 설정
		set.setSupportZoom(true); // 확대,축소 기능을 사용할 수 있도록 설정
		set.setCacheMode(WebSettings.LOAD_NO_CACHE); // 웹뷰가 캐시를 사용하지 않도록 설정
		wv.loadUrl("http://naver.com");

	}

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

}

 

 

하루퍼 (710 포인트) 님이 2014년 1월 30일 질문
하루퍼님이 2014년 1월 30일 수정

1개의 답변

0 추천
인텐트에 엑스트라를 사용하시면 되요.

 

가령 네이버 버튼을 눌렀다고 하면

 

Button man1 = (Button) findViewById(R.id.man1);

man1.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

Intent i = new Intent(MainActivity.this, Web.class);

 

//엑스트라로 웹페이지 종류를 넘깁니다.

i.putExtra("webType", "naver");

startActivity(i);

}

 

 

Web 액티비티의 onCreate 메소드에서

 

//받은 인텐트에서 웹페이지 종류를 가져옵니다.

Intent intent = getIntent();

String webType = intent.getStringExtra("webType", "");

 

//해당 웹페이지를 보여줍니다.

showWebpage(webType);

}

 

 

private void showWebpage(String webType) {

String url = null;

if(webType.equals("naver")) url = "http://www.naver.com";

 

.

.

.

webview.loadUrl(url);

 

 

다른 부분도 이렇게 구현하시면 됩니다^^
방귀과장 (18,940 포인트) 님이 2014년 1월 30일 답변
String webType = intent.getStringExtra("webType", "");

에서 "webType", "" 의 ""는 비워두나요?
네, 비워두시면 되요.

그자리에는 webType의 값이 없는 경우 사용하는 디폴트값입니다.
근데 getStringExtra 에서 에러가 나네요..

Description    Resource    Path    Location    Type
The method getStringExtra(String) in the type Intent is not applicable for the arguments (String, String)    Web.java    /SnuffGame/src/com/snuff/game    line 21    Java Problem
아 죄송해요.

getBooleanExtra와 착각했네요^^

getStringExtra("webType");라고 하셔야 해요.
뒤에 ""는 빼세요.
정말 감사합니다. 설연휴 잘보내세요~!!^^
...