作者:爷_引领霸气 | 来源:互联网 | 2023-05-28 10:42
我按照本教程中的说明
完成了所有操作:
谷歌android基础教程,尽管一切都按照描述完成,但代码拒绝编译3个错误.看起来像是在写这些东西的人忘了提到这些东西是什么以及我在哪里/如何定义它们.
我得到的错误:
Error:(24, 68) error: cannot find symbol variable container
Error:(36, 23) error: cannot find symbol variable action_settings
Error:(46, 54) error: cannot find symbol variable fragment_display_message
3个字段都没有在任何地方定义(也许其中一个库是错误的?)有问题的文件是:
package com.example.asteroth.first;
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.*;
import android.widget.TextView;
import android.R;
public class DisplayMessageActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
setContentView(textView);
// setContentView(R.layout.activity_display_message);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
}
}
@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();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
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_display_message, container, false);
return rootView;
}
}
}
我正在使用我刚刚下载的Android Studio,并且没有问题来自搜索或类似问题点这个问题,因此我怀疑教程的作者忘记提及一些小问题.我已经看到建议将"容器"作为一个新文件放在一个XML文件中,但无济于事.
编辑:
'在Android开发教程之后找不到符号ActionBarActivity'?
这篇文章提出了一个解决方案,但是它将ActionBarActivity更改为Activity,这与教程使用的内容非常不同,我不知道它会产生多大的影响
EDIT2:发现和删除的问题:导入android.R //导致action_settings错误容器丢失//必须在xml文件中将其添加为名为错误的id xml文件//如果我说得对,我还在等人有经验的澄清,但似乎教程使用了xml文件的不同名称,然后是java代码引用的名称
剩下的问题类似于这一个
无法解决方法placeholderfragment错误
但是,我都扩展了Fragment并包含android.app.Fragment,可以在包含的文件中看到.
1> Sift..:
我尝试了相同的教程,这是我如何修复我的错误:
R.id.container无法解决错误
我必须导入android.support.v4.app.Fragment来解决这个问题,并将android:id ="@ + id/container"添加到我的activity_display_message.xml文件的RelativeLayout部分.
fragment_display_message无法解析错误
将R.layout.fragment_display_message更改为R.layout.activity_display_message.无需为fragment_display_message创建新的xml文件.
这应该解决这两个错误.
但是如果你注释掉if(savedInstanceState ............语句),你可能会更好,否则一旦你尝试运行它,程序就会崩溃,如果它没有给你任何错误.
你的onCreate方法应如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_display_message);
Intent intent=getIntent();
String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView=new TextView(this);
textView.setTextSize(40);
textView.setText(message);
setContentView(textView);
/*if (savedInstanceState==null){
getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
}*/
}