Android 앱을 처음 사용합니다. Android 앱을 만들었으므로 앱을 재료 탭보기로 마이그레이션하려고 합니다만 어떻게해야하는지 이해할 수 없습니다. 이건 내 현재 코드입니다내 앱을 재료 탭보기에 통합 할 수 없습니다.
매니페스트 파일 :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package">
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/MyMaterialTheme">
<activity android:name="com.package.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="xxxxxxxxxxxx" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
</manifest>
주요 활동
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new Message(), "Message");
adapter.addFragment(new Maps(), "Maps");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
Maps.java (탭 단편)
import android.Manifest;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.app.Activity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class Maps extends Fragment implements OnMapReadyCallback {
private int contentView;
@Override
public void onMapReady(GoogleMap map) {
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
CameraPosition googlePlex = CameraPosition.builder()
.target(new LatLng(37.4219999, -122.0862462))
.zoom(16)
.bearing(0)
.tilt(45)
.build();
map.moveCamera(CameraUpdateFactory.newCameraPosition(googlePlex));
map.addMarker(new MarkerOptions()
.position(new LatLng(17.440466, 78.496668))
.title("SVIT")
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
map.setMyLocationEnabled(true);
}
private int checkSelfPermission(String accessFineLocation) {
return 0;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_maps);
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
public void setContentView(int contentView) {
this.contentView = contentView;
}
}
Message.java (두 번째 탭)
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.package.R;
public class Message extends Fragment {
private int contentView;
public Message() {
}
Button sendBtn;
EditText txtphoneNo;
EditText txtMessage;
Button clearBtn;
Button mapBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendBtn = (Button) findViewById(R.id.btnSendSMS);
txtphoneNo = (EditText) findViewById(R.id.editText);
txtMessage = (EditText) findViewById(R.id.editText2);
clearBtn = (Button) findViewById(R.id.btnClearSMS);
mapBtn = (Button) findViewById(R.id.btnMaps);
sendBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendSMSMessage();
}
});
clearBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v2) {
txtMessage.setText("");
txtphoneNo.setText("");
}
});
}
protected void sendSMSMessage() {
Log.i("Send SMS", "");
String phoneNo = txtphoneNo.getText().toString();
String message = txtMessage.getText().toString();
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.", Toast.LENGTH_LONG).show();
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "SMS faild, please try again.", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
@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 View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_message, container, false);
}
public void setContentView(int contentView) {
this.contentView = contentView;
}
}
Build.Gradle (응용 프로그램)
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
defaultConfig {
applicationId "com.package"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "3.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
//compile 'com.google.android.gms:play-services:9.2.1'
//compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.google.android.gms:play-services-appindexing:9.2.1'
compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-location:9.2.1'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:support-v4:22.2.1'
}
build.gradle (프로젝트)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
나는 많은 온라인 자습서를 통해 따랐다과 재료 설계하지 않고 있지만, 재료 탭을 사용하려고 후 일 그것이 작동하지 않는 것을보십시오.
이
는Fragment
는
Activity
과 동일하지, 난 @ cricket_007으로
Error:(42, 33) error: cannot find symbol method findViewById(int)
Error:(69, 28) error: cannot find symbol method getApplicationContext()
Error:(43, 29) error: cannot find symbol method findViewById(int)
Error:(40, 28) error: cannot find symbol method findViewById(int)
Error:(41, 33) error: cannot find symbol method findViewById(int)
Error:(69, 20) error: onCreate(Bundle) in Maps cannot override onCreate(Bundle) in Fragment
attempting to assign weaker access privileges; was public
Error:(36, 20) error: onCreate(Bundle) in Message cannot override onCreate(Bundle) in Fragment
attempting to assign weaker access privileges; was public
Error:(72, 86) error: inconvertible types
required: MapFragment
found: Fragment
Error:(81, 9) error: cannot find symbol method getMenuInflater()
Error:(73, 28) error: cannot find symbol method getApplicationContext()
Error:(78, 5) error: method does not override or implement a method from a supertype
:app:compileDebugJavaWithJavac FAILED
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
당신은 "자사가 작동하지"무엇을 의미 미상? 'TabLayout'은 무엇을하고 있습니까? 표시되지 않습니까? 접촉에 반응하지 않습니까? – Bryan
먼저 탭보기를 만들었고 정상적으로 작동 중입니다. 그런 다음 해당 탭보기로 내 응용 프로그램에 연결하려고 시도한 다음 오류가 발생했습니다. 1) 오류 : (69, 20) 오류 : onCreate (번들)가 onCreate를 재정의 할 수 없습니다. 묶음) 조각에서 약한 액세스 권한을 할당하려고 시도합니다. 공개 2) 오류 : (72, 86) 오류 : 변환 할 수없는 유형 필수 : MapFragment 발견 : 조각 – Srikar
내가 뭔가를 잃어버린거야? 나는 당신이 말하는 오류를 보지 못합니다. – Bryan