main activity에서 btn2 버튼을 클릭하면 값을 주면서 sub activity로 화면이 넘어가고 거기서 값을 변경하고 여깄는 버튼(complete)을 누르면
다시 main activity로 넘어와서 그 변경된 값 갖고 다른 일을 해야되는데요
main에서 sub 화면으로 넘어가는건 되고 거기서 버튼을 눌러서 main으로 값 전달시키면서 제대로 종료는 되는데요
이 때 main 화면이 안나오고 그냥 꺼지네요 ㅠㅠㅠㅠㅠㅠㅠ 뭐가 문제일까요?? 하루 반나절 봐도 모르겠어요 ㅠㅠ
누가 제발 제발 도와주시면 감사하겠습니다 ..........
-----------------------------------------------SettingLock.java--------------------------------------------
package com.settinglock;
import java.util.*;
import android.app.*;
import android.os.*;
import android.view.*;
import android.view.View.OnClickListener;
import android.widget.*;
import android.content.Intent;
public class SettingLock extends Activity {
ArrayList<String> startmPackageFilter = new ArrayList<String>();
ArrayList<String> resultmPackageFilter= new ArrayList<String>();
private static final int REQUEST_CODE_1 = 10 ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(mClickListener);
Button btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(mClickListener);
Button btn2 = (Button)findViewById(R.id.btn2);
btn2.setOnClickListener(mClickListener);
}
OnClickListener mClickListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
switch (v.getId())
{
case R.id.btn:
{
Intent i = new Intent(SettingLock.this, AppLock.class);
i.putStringArrayListExtra("PACKAGE_FILTER", resultmPackageFilter);
startService(i);
Toast.makeText(SettingLock.this,"Service Start!", Toast.LENGTH_SHORT).show();
break;
}
case R.id.btn1:
{
AppLock.mStop=false;
Intent i = new Intent(SettingLock.this, AppLock.class);
stopService(i);
Toast.makeText(SettingLock.this,"Service Stop!", Toast.LENGTH_SHORT).show();
break;
}
case R.id.btn2:
{
Intent i = new Intent(SettingLock.this, SelectApp.class);
i.putStringArrayListExtra("PACKAGE_FILTER", startmPackageFilter);
startActivityForResult(i, REQUEST_CODE_1);
// startActivity(i);
break;
}
}
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
Toast.makeText(this, "whywhywhywhy", Toast.LENGTH_SHORT).show();
if(requestCode == REQUEST_CODE_1){
resultmPackageFilter = data.getStringArrayListExtra("PACKAGE_FILTER");
}
}
else {
Toast.makeText(this, "취소하고 그냥 옴.", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onStop()
{
super.onStop();
finish();
}
}
-----------------------------------SelectApp.java------------------------------------------------------
package com.settinglock;
import android.app.Activity;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class SelectApp extends Activity {
//ArrayList<String> mPackageFilter = new ArrayList<String>();
/** Called when the activity is first created. */
// Data를 관리해주는 Adapter
private CustomBaseAdapter mCustomAdapter = null;
ArrayList<InfoClass> data;
ArrayList<String> temp=new ArrayList<String>();;
ArrayList<String> startmPackageFilter=new ArrayList<String>();;
ArrayList<String> cls=new ArrayList<String>();
ArrayList<String> clss=new ArrayList<String>();
ArrayList<String> pkg=new ArrayList<String>();
ArrayList<String> jv=new ArrayList<String>();
String str=null;
Integer n;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.applist);
setLayout();
completed.setText("현재 체크된 숫자는 = 0 개 입니다.");
//getIntent
startmPackageFilter = getIntent().getStringArrayListExtra("PACKAGE_FILTER");
PackageManager packageManager=this.getPackageManager();
Toast.makeText(SelectApp.this,"Sssss", Toast.LENGTH_SHORT).show();
Intent mainIntent=new Intent(Intent.ACTION_MAIN,null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(mainIntent, 0);
for (int i = 0, iend = resolveInfos.size(); i < iend; i++) {
ResolveInfo ri = resolveInfos.get(i);
String pkgName = ri.activityInfo.applicationInfo.packageName; //패키지 이름
String className = ri.activityInfo.name; //클래스 이름(실행되는 액티비티 이름)
cls.add(className);
pkg.add(pkgName);
Integer len = pkg.get(i).length();
jv.add( cls.get(i).substring(len, cls.get(i).length()));
startmPackageFilter.add( pkg.get(i) + "/" + jv.get(i));
}
data = new ArrayList<InfoClass>();
for(ResolveInfo info:resolveInfos){
data.add(new InfoClass( info.loadLabel(packageManager).toString()));
}
mCustomAdapter = new CustomBaseAdapter(SelectApp.this , data);
lst.setAdapter(mCustomAdapter);
// BaseAdapter 연결
// lst.setAdapter(new CustomBaseAdapter(this, data));
lst.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "ITEM CLICK = " + position, Toast.LENGTH_SHORT).show();
mCustomAdapter.setChecked(position);
mCustomAdapter.notifyDataSetChanged();
}
});
}
private ListView lst=null;
private Button completed=null;
private void setLayout(){
lst = (ListView)findViewById(R.id.l);
completed = (Button)findViewById(R.id.completed);
//completed.setOnClickListener(mClickListener);
completed.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
completed.setText("현재 체크된 숫자는 = "+ mCustomAdapter.getChecked().size()+" 개 입니다.");
// 체크되 있는 CheckBox의 Position을 얻어 온다.
for(int i=0 ; i<mCustomAdapter.getChecked().size() ; i++){
n= mCustomAdapter.getChecked().get(i);
Toast.makeText( getApplicationContext(), "n = " + n, Toast.LENGTH_SHORT ).show();
Toast.makeText( getApplicationContext(), startmPackageFilter.get(n), Toast.LENGTH_SHORT ).show();
}
Intent itt = new Intent(SelectApp.this, SettingLock.class);
itt.putStringArrayListExtra("PACKAGE_FILTER", startmPackageFilter);
setResult(RESULT_OK, itt);
finish();
Toast.makeText( getApplicationContext(), "ㅁㅁ", Toast.LENGTH_SHORT ).show();
}
});
}
}
--------------------------매니패스트-------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.settinglock"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SettingLock"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:enabled="true" android:name="AppLock"/>
<activity android:name="LockPass"
android:label="Application Protect"
android:theme="@android:style/Theme.Dialog"
/>
<activity android:name="SelectApp"></activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
Intent 클래스가 import 되어 있는 지 확인해보심이 어떨까요?
If you get “intent cannot be resolved to a type” error, maybe sure you imported the intent package by pressing “ctrl + shift + o” on windows
Intent itt = new Intent(SelectApp.this, SettingLock.class);
itt.putStringArrayListExtra("PACKAGE_FILTER", startmPackageFilter);
여기서 itt를 new Intent 하지 말고
Intent itt = SelectApp.this.getIntent();
로 바꿔보세요.