我的目的是从EditText获取文本并在Toast消息中查看它。代码是这样的:
package com.example.primaapplicazione;
import android.app.Activity;
import android.app.ActionBar;
import android.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.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.os.Build;
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null)
{
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
public void fromEditToToast()
{
EditText e = (EditText)findViewById(R.id.editText1);
Button b = (Button)findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
}
});
}
@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;
}
}
}
如果我调用方法" fromEditToToast()"在没有" setOnClickListener()"的onCreate()中,它正确编译并打开应用程序。如果我在模拟器应用程序上使用该函数调用相同的方法,则不会打开,显示此消息"不幸的是,PrimaApplicazione已停止。
我该怎么做?
答案 0 :(得分:0)
我看到这是一个非常常见的错误,PlaceholderFragment
使用必须包含元素fragment_main.xml
和editText1
的{{1}},可能您已经定义了这些元素你的button1
答案 1 :(得分:0)
可能是在活动开始时未实例化视图。设备比模拟器工作得更快,因此它可能在设备中工作而不在模拟器中。
直接在片段中实现你的onClickListener并从那里显示toast,它会起作用(假设EditText和Button位于片段)。
在片段中尝试以下代码,并在片段的onViewCreated函数中调用以下函数来设置按钮的监听器: -
private void set buttonOnClickListener()
{
EditText e = (EditText)getView().findViewById(R.id.editText1);
Button b = (Button)getView().findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//your code goes here;
}
});
}